1604. 两数最大和

1604. 两数最大和

中文English

给定一个由N个整数组成的数组A,返回两个数字的最大总和,规定这两个数的所有位加起来相等。 如果没有两个数字的各个位相加和相等,则该函数应返回-1。

样例

示例1:
输入:
A = [51, 71, 17, 42]
输出: 93
解释:这里有两对各个位相加和相等的数:(51, 42) 和 (17,71),第一对的和是93
示例2:
输入:
A = [42, 33, 60]
输出: 102
解释:所有的数各个位相加的和都相等,选择42 + 60 = 102
示例3:
输入:
A = [51, 32, 43]
输出: -1
解释: 所有数的各个位相加和都不一样,因此返回-1

注意事项

  • N的范围是 [1, 200000]
  • A中的每一个参数的范围是 [1, 1000000000]
class Solution:
    def MaximumSum(self, A):
        if not A: return -1 

        sum_array = self.help(A)
        max_value = -1
        length = len(A)

        for i in range(length - 1):
            for j in range(i + 1, length):
                if sum_array[i] == sum_array[j] and A[i] + A[j] > max_value:
                    max_value = A[i] + A[j]  

        return max_value

    def help(self, nums):
        #得到位数和,总和
        sum_array = []

        for num in nums:
            num_str = str(num)

            num_sum = 0
            for val in num_str:
                num_sum += int(val) 
            sum_array.append(num_sum)

        return sum_array

 

posted @ 2020-12-15 21:27  风不再来  阅读(222)  评论(0编辑  收藏  举报