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)