
先将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;
}
本文介绍了一种高效计算四个整数数组中是否存在两组数相加之和为零的方法。通过使用哈希表提前存储两个数组的所有可能组合,再遍历另外两个数组查找相反数,实现了快速查找。
1199

被折叠的 条评论
为什么被折叠?



