## 题目地址 https://leetcode-cn.com/problems/4sum-ii/ ## 思路 本题使用哈希表映射的方法 那么为什么18. 四数之和,0015.三数之和不适用哈希表映射的方法呢,感觉上 这道题目都是四个数之和都可以用哈希,三数之和怎么就用不了哈希呢 因为题目15.三数之和和18. 四数之和,使用哈希的方法在不超时的情况下做到对结果去重很困难 而这道题目 相当于说 不用考虑重复元素,是四个独立的数组,所以相对于题目18. 四数之和,0015.三数之和,还是简单了不少 ## C++代码 ``` class Solution { public: int fourSumCount(vector& A, vector& B, vector& C, vector& D) { unordered_map umap; //key:a+b的数值,value:a+b数值出现的次数 for (int a : A) { for (int b : B) { if (umap.find(a + b) != umap.end()) { umap[a + b]++; } else { umap[a + b] = 1; } } } int count = 0; for (int c : C) { for (int d : D) { if (umap.find(0 - (c + d)) != umap.end()) { count += umap[0 - (c + d)]; } } } return count; } }; ``` > 更多算法干货文章持续更新,可以微信搜索「代码随想录」第一时间围观,关注后,回复「Java」「C++」 「python」「简历模板」「数据结构与算法」等等,就可以获得我多年整理的学习资料。