0
点赞
收藏
分享

微信扫一扫

LintCode 题目:两数最大和

Hyggelook 2022-06-29 阅读 23

URL:​​https://www.lintcode.com/problem/maximum-sum-of-two-numbers/description​​

描述

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

 

  • N的范围是 [1, 200000]
  • A中的每一个参数的范围是 [1, 1000000000]

 

样例

示例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

在代码段中添加:

int n[200010]={0};
vector<int> B = A;
int count = A.size();
int sum = -1;
for (int i = 0; i <count; i++) {
/* code */
while(A[i]/10!=0){
n[i]+=A[i]%10;
A[i]/=10;
}
n[i]+=A[i];
}
for (int i = 0; i < count-1; i++) {
/* code */
for (int j = i+1; j < count; j++) {
/* code */
if(n[i]==n[j]){
if(sum<B[i]+B[j]){
sum = B[i]+B[j];
}
}
}
}
return sum;

即可:

LintCode 题目:两数最大和_数组


举报

相关推荐

0 条评论