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