454. 四数相加 II JavaScript实现

70 阅读1分钟

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
};