2342. Max Sum of a Pair With Equal Sum of Digits
Description
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. If no such pair of indices exists, return -1.
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
Solutions
Solution 1: Hash Table
We can use a hash table \(d\) to record the maximum value corresponding to each digit sum, and initialize an answer variable \(ans = -1\).
Next, we traverse the array \(nums\). For each number \(v\), we calculate its digit sum \(x\). If \(x\) exists in the hash table \(d\), then we update the answer \(ans = \max(ans, d[x] + v)\). Then update the hash table \(d[x] = \max(d[x], v)\).
Finally, return the answer \(ans\).
Since the maximum element in \(nums\) is \(10^9\), the maximum digit sum is \(9 \times 9 = 81\). We can directly define an array \(d\) of length \(100\) to replace the hash table.
The time complexity is \(O(n \times \log M)\), and the space complexity is \(O(D)\). Here, \(n\) is the length of the array \(nums\), and \(M\) and \(D\) are the maximum value of the elements in the array \(nums\) and the maximum value of the digit sum, respectively. In this problem, \(M \leq 10^9\), \(D \leq 81\).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|