leetcode-454-四数相加II
class Solution {
public:
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
int N = A.size(), res =0;
map<int, int> count1, count2, count3;
for (int i = 0; i < N; i++) { //计算A组freq
count1[A[i]]++;
}
for (int i = 0; i < N; i++) {
for (auto it = count1.begin(); it != count1.end(); it++) { //计算A+B组freq,存在count2中
count2[(*it).first + B[i]] += (*it).second;
}
}
count1.clear();
for (int i = 0; i < N; i++) { //计算C的频率
count1[C[i]]++;
}
for (int i = 0; i < N; i++) {
for (auto it = count1.begin(); it != count1.end(); it++) { //计算C+D组的freq,存在count3中
count3[(*it).first + D[i]] += (*it).second;
}
}
for (auto it = count2.begin(); it != count2.end(); it++) {
res += (*it).second * (count3[-((*it).first)]);
}
return res;
}
};