4084. Maximize Sum Of Squares Of Digits¶
4084. Maximize Sum of Squares of Digits
Medium
You are given two positive integers num and sum.
A positive integer n is good if it satisfies both of the following:
- The number of digits in
nis exactlynum. - The sum of digits in
nis exactlysum.
The score of a good integer n is the sum of the squares of digits in n.
Return a string denoting the good integer n that achieves the maximum score. If there are multiple possible integers, return the maximum βββββββone. If no such integer exists, return an empty string.
Example 1:
Input: num = 2, sum = 3
Output: "30"
Explanation:
There are 3 good integers: 12, 21, and 30.
- The score of 12 is
12 + 22 = 5. - The score of 21 is
22 + 12 = 5. - The score of 30 is
32 + 02 = 9.
The maximum score is 9, which is achieved by the good integer 30. Therefore, the answer is "30".
Example 2:
Input: num = 2, sum = 17
Output: "98"
Explanation:
There are 2 good integers: 89 and 98.
- The score of 89 is
82 + 92 = 145. - The score of 98 is
92 + 82 = 145.
The maximum score is 145. The maximum good integer that achieves this score is 98. Therefore, the answer is "98".
Example 3:
Input: num = 1, sum = 10
Output: ""
Explanation:
There are no integers that have exactly 1 digit and whose digits sum to 10. Therefore, the answer is "".
Constraints:
1 <= num <= 2 * 1051 <= sum <= 2 * 106
Solution¶
class Solution {
public String maxSumOfSquares(int num, int sum) {
if (num * 9 < sum)
return "";
StringBuilder res = new StringBuilder();
int currSum = sum;
for (int i = 0; i < num; i++) {
for (int dig = 9; dig >= 0; dig--) {
int remSum = currSum - dig;
if (i == 0 && dig == 0 && num > 1)
continue;
if (remSum >= 0 && remSum <= 9 * (num - i - 1)) {
res.append(dig);
currSum -= dig;
break;
}
}
}
if (res.length() != num || currSum != 0)
return "";
return res.toString();
}
}
Complexity Analysis¶
- Time Complexity: O(?)
- Space Complexity: O(?)
Explanation¶
[Add detailed explanation here]