Description#
You are given a positive integer num
consisting of exactly four digits. Split num
into two new integers new1
and new2
by using the digits found in num
. Leading zeros are allowed in new1
and new2
, and all the digits found in num
must be used.
- For example, given
num = 2932
, you have the following digits: two 2
's, one 9
and one 3
. Some of the possible pairs [new1, new2]
are [22, 93]
, [23, 92]
, [223, 9]
and [2, 329]
.
Return the minimum possible sum of new1
and new2
.
Example 1:
Input: num = 2932
Output: 52
Explanation: Some possible pairs [new1, new2] are [29, 23], [223, 9], etc.
The minimum sum can be obtained by the pair [29, 23]: 29 + 23 = 52.
Example 2:
Input: num = 4009
Output: 13
Explanation: Some possible pairs [new1, new2] are [0, 49], [490, 0], etc.
The minimum sum can be obtained by the pair [4, 9]: 4 + 9 = 13.
Constraints:
Solutions#
Solution 1#
1
2
3
4
5
6
7
8
| class Solution:
def minimumSum(self, num: int) -> int:
nums = []
while num:
nums.append(num % 10)
num //= 10
nums.sort()
return 10 * (nums[0] + nums[1]) + nums[2] + nums[3]
|
1
2
3
4
5
6
7
8
9
10
11
| class Solution {
public int minimumSum(int num) {
int[] nums = new int[4];
for (int i = 0; num != 0; ++i) {
nums[i] = num % 10;
num /= 10;
}
Arrays.sort(nums);
return 10 * (nums[0] + nums[1]) + nums[2] + nums[3];
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
| class Solution {
public:
int minimumSum(int num) {
vector<int> nums;
while (num) {
nums.push_back(num % 10);
num /= 10;
}
sort(nums.begin(), nums.end());
return 10 * (nums[0] + nums[1]) + nums[2] + nums[3];
}
};
|
1
2
3
4
5
6
7
8
9
| func minimumSum(num int) int {
var nums []int
for num > 0 {
nums = append(nums, num%10)
num /= 10
}
sort.Ints(nums)
return 10*(nums[0]+nums[1]) + nums[2] + nums[3]
}
|
1
2
3
4
5
6
7
8
9
| function minimumSum(num: number): number {
const nums = new Array(4).fill(0);
for (let i = 0; i < 4; i++) {
nums[i] = num % 10;
num = Math.floor(num / 10);
}
nums.sort((a, b) => a - b);
return 10 * (nums[0] + nums[1]) + nums[2] + nums[3];
}
|
1
2
3
4
5
6
7
8
9
10
11
| impl Solution {
pub fn minimum_sum(mut num: i32) -> i32 {
let mut nums = [0; 4];
for i in 0..4 {
nums[i] = num % 10;
num /= 10;
}
nums.sort();
10 * (nums[0] + nums[1]) + nums[2] + nums[3]
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| int cmp(const void* a, const void* b) {
return *(int*) a - *(int*) b;
}
int minimumSum(int num) {
int nums[4] = {0};
for (int i = 0; i < 4; i++) {
nums[i] = num % 10;
num /= 10;
}
qsort(nums, 4, sizeof(int), cmp);
return 10 * (nums[0] + nums[1]) + nums[2] + nums[3];
}
|