454. 4Sum II

在这里插入图片描述

这题自己先想的是用之前做类似题目的方法,就是遍历两个,然后用两个指针一高一低,然后往中间遍历。遇到的问题是如果有重复值怎么办?

下面的做法是评论区看来的,而且时间复杂度只有O(n^2),很遗憾自己没有想出来

class Solution {
public:
    int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
        unordered_map<int, int> AB;
        for (int a : A)
            for (int b : B)
                AB[a+b]++;
        int res = 0;
        for (int c : C)
            for (int d : D)
                res += AB[-c-d];
        return res;
    }
};
posted @ 2019-10-06 14:49  于老师的父亲王老爷子  阅读(16)  评论(0)    收藏  举报