Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2160.html
2160. Minimum Sum of Four Digit Number After Splitting Digits (Easy)
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: two2
's, one9
and one3
. 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:
1000 <= num <= 9999
Similar Questions:
Solution 1. Sorting + Greedy
Get the 4 digits from n
. Assume they are a <= b <= c <= d
, the sum is minimum when new1 = ac
and new2 = bd
.
So, the answer is 10 * (a + b) + (c + d)
.
-
// OJ: https://leetcode.com/problems/minimum-sum-of-four-digit-number-after-splitting-digits/ // Time: O(1) or more specifically, O(KlogK), where `K` is the number of digits in `n` // Space: O(1) or O(K) class Solution { public: int minimumSum(int n) { int d[4] = {}, ans = 0; for (int i = 0; i < 4; ++i, n /= 10) d[i] = n % 10; sort(begin(d), end(d)); return 10 * (d[0] + d[1]) + d[2] + d[3]; } };
-
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]; } }
-
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] ############ # 2160. Minimum Sum of Four Digit Number After Splitting Digits # https://leetcode.com/problems/minimum-sum-of-four-digit-number-after-splitting-digits class Solution: def minimumSum(self, num: int) -> int: digits = [int(c) for c in str(num)] digits.sort() return (digits[0] * 10 + digits[2]) + (digits[1] * 10 + digits[3])
-
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] }
-
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]; }
-
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] } }
Discuss
https://leetcode.com/problems/minimum-sum-of-four-digit-number-after-splitting-digits/discuss/1747007/