给你一个下标从 0 开始的数组 nums
,数组中的元素都是 正 整数。请你选出两个下标 i
和 j
(i != j
),且 nums[i]
的数位和 与 nums[j]
的数位和相等。
请你找出所有满足条件的下标 i
和 j
,找出并返回 nums[i] + nums[j]
可以得到的 最大值 。
示例 1:
输入:nums = [18,43,36,13,7] 输出:54 解释:满足条件的数对 (i, j) 为: - (0, 2) ,两个数字的数位和都是 9 ,相加得到 18 + 36 = 54 。 - (1, 4) ,两个数字的数位和都是 7 ,相加得到 43 + 7 = 50 。 所以可以获得的最大和是 54 。
class Solution(object): def sum_digit(self,num): ans = 0 while(num>=9): ans = ans + num%10 num = num // 10 return ans+num def maximumSum(self, nums): """ :type nums: List[int] :rtype: int """ ans = -1 l = len(nums) num_sum = {} for i in range(l): num_sum[i] = self.sum_digit(nums[i]) new_dict = {} for key, value in num_sum.items(): if value in new_dict: new_dict[value].append(nums[key]) else: new_dict[value] = [nums[key]] for waiting in new_dict.values(): if len(waiting)>1: sorted_list = sorted(waiting, reverse=True) ans = max(ans,sorted_list[0]+sorted_list[1]) return ans
居然没超时
且
标签:nums,sum,2342,num,dict,ans,new From: https://www.cnblogs.com/LYoungH/p/17840170.html