当前位置: 首页 > news >正文

2578. 最小和分割

给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足:

  • num1 和 num2 直接连起来,得到 num 各数位的一个排列。
    • 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。
  • num1 和 num2 可以包含前导 0 。

请你返回 num1 和 num2 可以得到的和的 最小 值。

注意:

  • num 保证没有前导 0 。
  • num1 和 num2 中数位顺序可以与 num 中数位顺序不同。

示例 1:

输入:num = 4325
输出:59
解释:我们可以将 4325 分割成num1 = 24 和 num2 = 35 ,和为 59 ,59 是最小和。

示例 2:

输入:num = 687
输出:75
解释:我们可以将 687 分割成 num1 = 68 和 num2 = 7, 和为最优值 75 。提示:
  • 10 <= num <= 109

题解

  • 从用例中可以看出,num1​ 和 num2分别是单调递增的,这样数据才会最小。
  • 当 num1 和 num2 位数不相等时,我们需要补上前导零使得它们位数相等。
  • num1和 num2​ 的位数差不能超过 1。
     

因此,我们就可以得出最小和的分割方法:

  1. 将 num的数字进行递增排序;
  2. 按照递增顺序,交替地将数字分配给 num1和 num2

code:

class Solution {public int splitNum(int num) {char[] arr = String.valueOf(num).toCharArray();Arrays.sort(arr);int num1 = 0, num2 = 0;for (int i = 0; i < arr.length; i++) {if (i % 2 == 0) {num1 = num1 * 10 + (arr[i] - '0');} else {num2 = num2 * 10 + (arr[i] - '0');}}return num1 + num2;}
}

http://www.lryc.cn/news/186078.html

相关文章:

  • Mybatis mapper报错:Class not found: org.jboss.vfs.VFS
  • ARM作业1
  • leetcode 502. IPO
  • [软考中级]软件设计师-计算机网络
  • Linux搭建我的世界MC服务器 【Minecraft外网联机教程】
  • APISIX 中ETCD 的问题
  • SSH版本信息可被获取
  • android 修改输出apk的包名
  • uni-app:文本超出部分用省略号表示
  • 轻松实现视频、音频、文案批量合并,享受批量剪辑的便捷
  • Spring Boot、Nacos配置文件的优先级
  • GO脚本-模拟鼠标键盘
  • Ubuntu设置SSH
  • 创作2周年?浅记一下~
  • MATLAB算法实战应用案例精讲-【优化算法】光学显微镜算法(OMA)(附MATLAB代码实现)
  • 常见弯道输送机有哪些
  • 聚观早报 | 2023社交进入大变革时代;赛力斯发布9月产销快报
  • nginx-proxy反向代理缓存
  • Java反射(一)--- 类的实例化
  • web3.0时代分布式网络协议的异同
  • 【多线程案例】设计模式-单例模式
  • MyBatis-Plus演绎:数据权限控制,优雅至极!
  • 医学专题--多组学在药物治疗靶点筛选中的研究思路
  • 搜索与图论总结
  • lv8 嵌入式开发-网络编程开发 15I/O多路复用及select函数
  • 阿里云 linux tomcat 无法访问方法
  • 公园视频监控系统如何改造?人工智能又能提供哪些帮助?
  • 面试算法19:最多删除一个字符得到回文
  • H5+Css3文本溢出添加省略号(包括插件)
  • 将休眠镜像文件hiberfil.sys移动到D盘,可以减少C盘好几个G的空间占用