// 本题解题步骤:
// 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。
// 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
// 定义int变量count,用来统计a+b+c+d = 0 出现的次数。
// 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。
// 最后返回统计值 count 就可以了
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
//用一个二重循环,将1,2数组的和放入一个map
//34也是如此
HashMap<Integer,Integer> map1 = new HashMap<>();
for(int i=0;i<nums1.length;i++){
for(int j=0;j<nums2.length;j++){
int sum = nums1[i]+nums2[j];
if(!map1.containsKey(sum)){
map1.put(sum,1);
}else{
map1.put(sum,map1.get(sum)+1);
}
}
}
//
int count = 0;
for(int i=0;i<nums3.length;i++){
for(int j=0;j<nums4.length;j++){
int sum = nums3[i]+nums4[j];
if(map1.containsKey(-sum)){
count+=map1.get(-sum);
}
}
}
return count;
}
}