class Solution {
public:
int minimumSum(int num) {
}
};
2160. 拆分数位后四位数字的最小和
给你一个四位 正 整数 num
。请你使用 num
中的 数位 ,将 num
拆成两个新的整数 new1
和 new2
。new1
和 new2
中可以有 前导 0 ,且 num
中 所有 数位都必须使用。
num = 2932
,你拥有的数位包括:两个 2
,一个 9
和一个 3
。一些可能的 [new1, new2]
数对为 [22, 93]
,[23, 92]
,[223, 9]
和 [2, 329]
。请你返回可以得到的 new1
和 new2
的 最小 和。
示例 1:
输入:num = 2932 输出:52 解释:可行的 [new1, new2] 数对为 [29, 23] ,[223, 9] 等等。 最小和为数对 [29, 23] 的和:29 + 23 = 52 。
示例 2:
输入:num = 4009 输出:13 解释:可行的 [new1, new2] 数对为 [0, 49] ,[490, 0] 等等。 最小和为数对 [4, 9] 的和:4 + 9 = 13 。
提示:
1000 <= num <= 9999
原站题解
java 解法, 执行用时: 0 ms, 内存消耗: 38.2 MB, 提交时间: 2023-10-11 10:49:34
class Solution { public int minimumSum(int num) { char[] chars = String.valueOf(num).toCharArray(); Arrays.sort(chars); return (chars[0] - '0' + chars[1] - '0') * 10 + (chars[2] - '0' + chars[3] - '0'); } }
java 解法, 执行用时: 0 ms, 内存消耗: 38.1 MB, 提交时间: 2023-10-11 10:49:14
class Solution { public int minimumSum(int num) { int[] a = new int[4]; for (int i = 0; i < 4; i++) { a[i] = num % 10; num /= 10; } Arrays.sort(a); return 10 * (a[0] + a[1]) + a[2] + a[3]; } // public int minimumSum2(int num) { List<Integer> ls= new ArrayList(); while (num != 0) { ls.add(num % 10); num /= 10; } Collections.sort(ls); return 10 * (ls.get(0) + ls.get(1)) + ls.get(2) + ls.get(3); } }
cpp 解法, 执行用时: 4 ms, 内存消耗: 6.3 MB, 提交时间: 2023-10-11 10:48:18
class Solution { public: int minimumSum(int num) { vector<int> digits; while (num) { digits.push_back(num % 10); num /= 10; } sort(digits.begin(), digits.end()); return 10 * (digits[0] + digits[1]) + digits[2] + digits[3]; } };
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-10-11 10:47:54
func minimumSum(num int) int { var d []int for num != 0 { d = append(d, num%10) num = num / 10 } sort.Ints(d) return 10 * (d[0]+d[1]) + d[2] + d[3] }
python3 解法, 执行用时: 40 ms, 内存消耗: 14.8 MB, 提交时间: 2022-05-25 16:01:39
class Solution: def minimumSum(self, num: int) -> int: d = [] while num: d.append(num%10) num = num // 10 d.sort() return 10 * (d[0]+d[1]) + d[2] + d[3]