这题自己先想的是用之前做类似题目的方法,就是遍历两个,然后用两个指针一高一低,然后往中间遍历。遇到的问题是如果有重复值怎么办?
下面的做法是评论区看来的,而且时间复杂度只有O(n^2),很遗憾自己没有想出来
class Solution {
public:
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
unordered_map<int, int> AB;
for (int a : A)
for (int b : B)
AB[a+b]++;
int res = 0;
for (int c : C)
for (int d : D)
res += AB[-c-d];
return res;
}
};