class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
unordered_map<int,int>map;//key:a+b的数值,value:a+b数值出现的次数
for(int a : nums1)
{
for(int b : nums2)
{
map[a+b]++;//遍历nums1、nums2两个容器,并将两和放进map中
}
}
int count = 0;//用统计a+b+c+d=0的次数
for(int c : nums3)
{
for(int d : nums4)
{
if(map.find(0-(c+d))!=map.end())//遍历nums3,nums4,查找map中是否有(0-(c+d))出现
{
count += map[0-(c+d)];
}
}
}
return count;
}
};
小记:
for(int a : nums1)是一种循环方式,意思是从nums1中依次拿出元素赋值给a
eg:
int b[] = { 1, 2, 3, 4 };
//for(int a : b)
for (int temp1 : b)
{
cout << temp1;
}
与下面的方式等价:
for (int* p = &b[0]; p != &b[4]; p++)
{
int a = *p;
cout << a;
}
输出:1234