先计算所有A和B的值相加的结果,并用哈希表记录,然后再计算所有C和D相加的结果,取反,然后看哈希表中是否有记录,记录了几次结果就加几次。
class Solution {
public:
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
int len=A.size();
map<long,int>sumAB;
int res=0;
for(int i=0;i<len;i++){ //记录A+B的所有值出现的次数,并且保存在sumAB中
for(int j=0;j<len;j++){
sumAB[A[i]+B[j]]++;
}
}
for(int i=0;i<len;i++){//寻找-C-D的值有没有在sumAB中出现,结果集加上出现的次数
for(int j=0;j<len;j++){
res+=sumAB[-C[i]-D[j]];
}
}
return res;
}
};