哈希表
- 分组+哈希
1、num1+num2分为一组,计算元素之和a以及和出现的次数存入map
2、num3+num4分为一组,计算元素之和b,因为最终和等于0,所以只需判断map中是否存在-b即可,存在则获取key为-b时的value值即次数并叠加。
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
Map<Integer, Integer> map=new HashMap<>();
for(int i:nums1){
for(int j:nums2){
if(map.containsKey(i+j)){
map.compute(i+j, (key, value) -> value + 1);
}else{
map.put(i+j,1);
}
}
}
int res=0;
for(int i:nums3){
for(int j:nums4){
if(map.containsKey(-i-j))
res+=map.get(-i-j);
}
}
return res;
}
}