c++:
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
unordered_map<int,int>umap;//key:a+b的数值,value:a+b数值出现的次数
// 遍历nums1和nums2数组,统计两个数组元素之和,和出现的次数,放到map中
for(int a:nums1){
for(int b:nums2){
umap[a+b]++;
}
}
int count = 0;
// 在遍历大nums3和nums4数组,找到如果 0-(c+d) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来。
for(int c:nums3){
for(int d:nums4){
if(umap.find(0-c-d) != umap.end()){
count += umap[0-c-d];
}
}
}
return count;
}
};
go:
func fourSumCount(nums1 []int, nums2 []int, nums3 []int, nums4 []int) int {
m := make(map[int]int)
for _, v1 := range nums1{
for _,v2 := range nums2{
m[v1+v2]++
}
}
count := 0
for _,v3 := range nums3{
for _,v4 :=range nums4{
count += m[-v3-v4]
}
}
return count
}