4Sum II

2017-04-16  本文已影响11人  我叫胆小我喜欢小心

题目来源
四个数组,每个数组取一个元素,求和为target的种数。
划分为两块,用哈希,代码如下:

class Solution {
public:
    int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
        int n1 = A.size(), n2 = B.size(), n3 = C.size(), n4 = D.size();
        unordered_map<int, int> mapAB, mapCD;
        for (int i=0; i<n1; i++)
            for (int j=0; j<n2; j++) {
                mapAB[A[i]+B[j]]++;
            }
        int res = 0;
        for (int i=0; i<n3; i++)
            for (int j=0; j<n4; j++) {
                mapCD[C[i]+D[j]]++;
                if (mapAB.count(0-(C[i]+D[j])) != 0)
                    res += mapAB[0-(C[i]+D[j])];
            }
        return res;
    }
};
上一篇下一篇

猜你喜欢

热点阅读