原题目: https://leetcode-cn.com/problems/sum-swap-lcci/
思路:
交换的两个数之差是(sum1 - sum2)的一半。注意如果(sum1 - sum2)是奇数就不会有解
代码:
class Solution {
public:
vector<int> findSwapValues(vector<int>& array1, vector<int>& array2) {
long sum1 = accumulate(array1.begin(),array1.end(),0);
long sum2 = accumulate(array2.begin(),array2.end(),0);
long diff = sum1 - sum2;
vector<int> a;
if(diff%2){
return a;
}
map<int,int> m;
diff = diff/2;
for(int i=0;i<array2.size();i++){
m[array2[i]] = 1;
}
for(int i=0;i<array1.size();i++){
if(i>0 && array1[i] ==array1[i-1]){
continue;
}
int b = array1[i] - diff;
if(m[b] == 1){
a.push_back(array1[i]);
a.push_back(b);
return a;
}
}
return a;
}
};