求和Sa,Sb
找两颗差值 = (Sa-Sb)/2的
set
class Solution {
public:
vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
int Sa = 0;
int Sb = 0;
set<int> setb;
for( auto i:A ){
Sa += i;
}
for( auto i:B ){
Sb += i;
setb.insert(i);
}
int sub = Sa - Sb;
sub /= 2;
for( auto i:A ){
if( setb.count( i-sub )== 1 ){
return { i,i-sub };
}
}
return {};
}
};
map
class Solution {
public:
vector<int> fairCandySwap(vector<int>& A, vector<int>& B) {
int Sa = 0;
int Sb = 0;
map<int,int> setb;
for( auto i:A ){
Sa += i;
}
for( auto i:B ){
Sb += i;
setb[i] = 1;
}
int sub = Sa - Sb;
sub /= 2;
for( auto i:A ){
if( setb[ i-sub ] == 1 ){
return { i,i-sub };
}
}
return {};
}
};
似乎一样快,但是map更占内存
标签:map,set,sub,setb,int,auto,888,Sb,Sa From: https://blog.51cto.com/liyunhao/6077013