454. 四数相加 II
- 将四个数组分为两块
- 通过map记录A + B的值,及数量;
- 再遍历C和D时,判断-(C + D)是否在map中存在;
- 核心思想:A+B-(C+D)
var fourSumCount = function(nums1, nums2, nums3, nums4) {
let m = new Map()
// 遍历A,B组,统计A+B的值和数量
for(let a of nums1){
for(let b of nums2){
if(m.has(a+b)){
// 如果事先存在a+b的值,那么在原来的value的基础上+1
m.set(a+b,m.get(a+b)+1)
}else{
m.set(a+b,1)
}
}
}
// 统计元组的个数
let res = 0
// 遍历C和D组
for(let c of nums3){
for(let d of nums4){
if(m.has(-(c+d))){
res += m.get(-(c+d))
}
}
}
return res
};