2025-02-12 Daily Challenge
Today I have done leetcode's February LeetCoding Challenge with cpp
.
February LeetCoding Challenge 12
Description
Max Sum of a Pair With Equal Sum of Digits
You are given a 0-indexed array nums
consisting of positive integers. You can choose two indices i
and j
, such that i != j
, and the sum of digits of the number nums[i]
is equal to that of nums[j]
.
Return the maximum value of nums[i] + nums[j]
that you can obtain over all possible indices i
and j
that satisfy the conditions.
Example 1:
Input: nums = [18,43,36,13,7] Output: 54 Explanation: The pairs (i, j) that satisfy the conditions are: - (0, 2), both numbers have a sum of digits equal to 9, and their sum is 18 + 36 = 54. - (1, 4), both numbers have a sum of digits equal to 7, and their sum is 43 + 7 = 50. So the maximum sum that we can obtain is 54.
Example 2:
Input: nums = [10,12,19,14] Output: -1 Explanation: There are no two numbers that satisfy the conditions, so we return -1.
Constraints:
1 <= nums.length <= 105
1 <= nums[i] <= 109
Solution
class Solution {
public:
int maximumSum(vector<int>& nums) {
map<int, multiset<int>> sumToNum;
int answer = -1;
for(auto n : nums) {
int c = n;
int s = 0;
while(c) {
s += c % 10;
c /= 10;
}
sumToNum[s].insert(n);
}
for(auto [_s, nums] : sumToNum) {
if(nums.size() < 2) continue;
auto it = nums.rbegin();
int result = *it;
++it;
result += *it;
answer = max(answer, result);
}
return answer;
}
};
// Accepted
// 83/83 cases passed (334 ms)
// Your runtime beats 5.25 % of cpp submissions
// Your memory usage beats 5.1 % of cpp submissions (148.4 MB)