四重for循环太慢,时间复杂度太高,故不选用
采取二二分组的方式,前一组算和sum,后一组相加等于0-sum,再添加相应的记录用于计数。
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
int res = 0;
Map<Integer,Integer> map = new HashMap<>();
for(int i : nums1){
for(int j : nums2){
int sum = i + j;
map.put(sum,map.getOrDefault(sum,0) + 1);
}
}
for(int i : nums3){
for(int j : nums4){
res += map.getOrDefault(0 - i - j ,0);
}
}
return res;
}
}