数学推导,然后用哈希表优化,时间复杂度O(N)
class Solution {
public:
vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
int countA = 0, countB = 0;
unordered_set<int> hashset;
vector<int> res;
for(auto a:A){
countA+=a;
hashset.insert(a);
}
for(auto b:B){
countB+=b;
}
int diff = countA-countB;
for(auto b:B){
if(hashset.count(diff/2+b)){
res.push_back(diff/2+b);
res.push_back(b);
break;
}
}
return res;
}
};