首页 > 其他分享 >2342

2342

时间:2023-11-18 10:45:22浏览次数:30  
标签:nums sum 2342 num dict ans new

给你一个下标从 0 开始的数组 nums ,数组中的元素都是 正 整数。请你选出两个下标 i 和 ji != 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

相关文章

  • Luogu P2342 叠积木
    题目链接:​​传送门​​虽然看着很简单还是计较了好久!fa[]是这堆的最底下那块的编号siz[]是底块所在堆的sizeans[]就是ans,这块底下有多少块在find的时候沿路更新答案即......