这道题和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;
};

results matching ""

    No results matching ""