给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
两个双重循环比一个四重循环更快
class Solution {
public int fourSumCount(int[] nums1, int[] nums2,
int[] nums3, int[] nums4) {
Map<Integer,Integer> map = new HashMap();
int temp = 0;
int result = 0;
//两个双重循环
for(int i=0;i<nums1.length;i++){
for(int j=0;j<nums2.length;j++){
temp = nums1[i] + nums2[j];
map.put(temp , map.getOrDefault(temp,0)+1);
}
}
for(int m=0;m<nums3.length;m++){
for(int n=0;n<nums4.length;n++){
temp = nums3[m] + nums4[n];
if(map.containsKey(0- temp)){
result += map.get(0 - temp);
}
}
}
return result;
}
}