这道题和2 sum本质上是一样的,用hashmap存储-A[i]-B[j],然后遍历C[i]+D[j],如果存在于map中,则累加。要注意map的value要存A[i]+B[j]的次数,因为可能不同的i,j,它们的和是一样的。
var fourSumCount = function(A, B, C, D) {
const len = A.length;
if (len === 0) {
return 0;
}
const map = {};
for (let i = 0; i < len; i++) {
for (let j = 0; j < len; j++) {
const curr = A[i]+B[j];
if (curr in map) {
map[curr]++;
} else {
map[curr] = 1;
}
}
}
let res = 0;
for (let i = 0; i < len; i++) {
for (let j = 0; j < len; j++) {
const curr = C[i]+D[j];
if (-curr in map) {
res += map[-curr];
}
}
}
return res;
};