454. 4Sum II

class Solution {
public:
    void initMap(unordered_map<int, int>& tar, vector<int>& ori1, vector<int>& ori2){
        for (int i = 0; i < ori1.size(); i++)
            for (int j = 0; j < ori2.size(); j++)
                tar[ori1[i] + ori2[j]]++;
    }
    int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
        unordered_map<int, int> AB, CD;

        initMap(AB, A, B);
        initMap(CD, C, D);

        int res = 0;
        for (auto kv = AB.begin(); kv != AB.end(); kv++) { //loook you can kv++++
            auto tmp = CD.find(-kv->first);
            if (tmp != CD.end())
                res += kv->second * tmp->second;
        }

        return res;
    }
};

results matching ""

    No results matching ""