思路
- 将四个数组分为两组,一组用于计数,一组用于查找
代码
class Solution {
public:
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
//将前两个数组的结果进行相加 计数
unordered_map<int, int> countAB;
for (int u: A)
for (int v: B)
countAB[u + v]++;
//将后两个数组的结果进行相加 查找
int ans = 0;
for (int u: C)
for (int v: D)
if (countAB.count(-u - v))
ans += countAB[-u - v];
return ans;
}
};
本文介绍了一种解决四数之和问题的有效算法。通过将数组分成两组,利用哈希表统计前两组数相加的结果频次,并查找后两组数相加结果的相反数是否存在哈希表中。此方法显著提高了求解效率。
458

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



