原创 leetcode[454]四数相加II /4Sum II 哈希策略

题目地址

https://leetcode-cn.com/problems/4sum-ii/

思路

本题使用哈希表映射的方法

那么为什么0015.三数之和不适用哈希表映射的方法呢,感觉上 这道题目都是四个数之和都可以用哈希,三数之和怎么就用不了哈希呢

因为题目0015.三数之和,使用哈希的方法在不超时的情况下做到对结果去重很困难

而这道题目 相当于说 不用考虑重复元素,是四个独立的数组,所以相对于题目0015.三数之和,还是简单了不少

C++代码

class Solution {
public:
    int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
        unordered_map<int, int> umap;
        for (int x : A) {
            for (int y : B) {
                if (umap.find(x + y) != umap.end()) {
                    umap[x + y]++;
                } else {
                    umap[x + y] = 1;
                }
            }
        }
        int count = 0;
        for (int x : C) {
            for (int y : D) {
                if (umap.find(0 - (x + y)) != umap.end()) {
                    count += umap[0 - (x + y)]; // 注意这里是加上umap[0 - (x + y)]的值
                }
            }
        }
        return count;
    }
};

更多精彩文章持续更新,可以微信搜索「 代码随想录」第一时间阅读,关注后有大量的学习资料和简历模板可以免费领取,本文 GitHub:https://github.com/youngyangyang04/leetcode-master 已经收录,欢迎star,fork,共同学习,一起进步。

猜你喜欢

转载自blog.csdn.net/youngyangyang04/article/details/107000496