先将A与B的组合存入hash,如果C与D的组合是hash元素的相反数,那么次数就加对应元素的个数。
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
int ans = 0;
unordered_map<int,int> ab;
for(auto a : A)
for(auto b : B)
++ab[a + b];
for(auto c : C)
for(auto d : D){
int need = -(c + d);
if(ab.count(need)) ans += ab[need];
}
return ans;
}