题目链接:https://leetcode-cn.com/problems/4sum-ii/
题目如下:
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
//注:预num1+num2+num3+num4=0,则num1+num2=-(num3+num4)
//思路:记录各种1和2组合出现的次数,在满足条件的情况下直接对这些组合次数累加
unordered_map<int,int> umap;//key:1+2的数值,value:1+2数值出现的次数
// 遍历1和2数组,统计两个数组元素之和,和出现的次数,放到map中
for(auto num1:nums1)
for(auto num2:nums2)
umap[num1+num2]++;
int result=0;
// 在遍历3和4数组,找到如果 0-(3+4) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来。
for(auto num3:nums3)
for(auto num4:nums4)
result+=umap[0-(num3+num4)];
return result;
}
};