一:题目
二:上码
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
/**
思路:
1.我们用map容器的key值存进去前两个数的和并记录其个数,然后在后面两个数组找其相反数,这样一相加
和就为0,
**/
unordered_map<int,int>m;//我们采用其主要是因为其查找效率高,底层实现是用的哈希表实现的
for(int a :nums1) {//此为增强版的for循环
for(int b:nums2) {
m[a+b]++;//这里我们统计其个数,是因为会出现 和相同的数 但其下标不同或则所在的数组不同
//我们最终是想实现统计的和为0的个数,所以重复的也得统计
}
}
int count = 0;
for(int c: nums3) {
for(int d: nums4) {
if(m.find(0-(c+d)) != m.end()){//c+d是个负数
count += m[0-(c+d)];//a+b 有count个数,那么只要有一个c+d = -(a+b),
//那么我们就count个组可以实现和0
}
}
}
return count;
}
};
打卡下班啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦哈哈哈哈哈哈哈哈哈 哈哈哈哈哈 加油陌生的你