思路:四数用四个循环太耗时,可以把它分成两个两个一组,相当于两个二重循环,这里用map,key是两个数组之和,value是和出现的次数也就是频率。第二个循环里面只用找-(后两个数组)之和,找到就把找到的次数加上,最后返回次数。
题解c++:
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
unordered_map<int,int> map;
int count=0;
for(int a:nums1)
for(int b:nums2)
{
map[a+b]++;
}
for(int c:nums3)
for(int d:nums4)
{
if(map.find(-(c+d))!=map.end())
{
count+=map[-(c+d)];
}
}
return count;
}
};