Problem Link

Description


You are given an integer array nums. You have to find the maximum sum of a pair of numbers from nums such that the largest digit in both numbers is equal.

For example, 2373 is made up of three distinct digits: 2, 3, and 7, where 7 is the largest among them.

Return the maximum sum or -1 if no such pair exists.

 

Example 1:

Input: nums = [112,131,411]

Output: -1

Explanation:

Each numbers largest digit in order is [2,3,4].

Example 2:

Input: nums = [2536,1613,3366,162]

Output: 5902

Explanation:

All the numbers have 6 as their largest digit, so the answer is 2536 + 3366 = 5902.

Example 3:

Input: nums = [51,71,17,24,42]

Output: 88

Explanation:

Each number's largest digit in order is [5,7,7,4,4].

So we have only two possible pairs, 71 + 17 = 88 and 24 + 42 = 66.

 

Constraints:

  • 2 <= nums.length <= 100
  • 1 <= nums[i] <= 104

Solution


Python3

class Solution:
    def maxSum(self, nums: List[int]) -> int:
        N = len(nums)
        res = -1
        
        def f(num):
            m = 0
            
            while num > 0:
                m = max(m, num % 10)
                num //= 10
            
            return m
        
        for i in range(N):
            for j in range(i + 1, N):
                maxi = f(nums[i])
                maxj = f(nums[j])
                
                if maxi == maxj:
                    res = max(res, nums[i] + nums[j])
        
        return res