代码随想录算法训练营第七天 | 454.四数相加II 、383.赎金信 

发布时间 2023-05-09 23:49:54作者: karen哈哈哈

?目录

    ✅ 454.四数相加II 

    ➡️ 383.赎金信 

    ➡️ 15.三数之和 

    ➡️ 18.四数之和 

 

 


 454.四数相加II 

⏰ 1.解题思路

  1. 定义一个map,key用来存放a和b的两数之和,value用来存两数之和出现的次数
  2. 将四个数组两两分组,nums1和nums2、nums3 和 nums4
  3. 定义变量count,统计四数之和为0 的次数
  4. 在遍历nums3 和 nums4,如果 0-(c+d) 其实等于 a+b,在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。

? 2.代码

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @param {number[]} nums3
 * @param {number[]} nums4
 * @return {number}
 */
var fourSumCount = function(nums1, nums2, nums3, nums4) {
  const twoSumMap = new Map();
//  计数
  let count = 0;
// 统计nums1和nums2数组元素之和出现次数,放到map
for (const n1 of nums1){
    for (const n1 of nums2){
        const sum = n1 + n2;
        twoSumMap.set(sum,(twoSumMap.get(sum) || 0 +1));
    }
}
// 接着找到 0-(c+d) 在map中出现的次数,把map中key对应的value值的次数统计出来
for (const n3 of nums3){
    for (const n4 of nums4){
        const sum = n3+n4;
        count += (twoSumMap.get(sum) || 0);
    }
}
return count;
};

 

? 3.知识点补充

?  Map.get(key), 通过key或得对应key的value,在本题中value是两数之和出现的次数


 

977.题目1

⏰ 1.解题思路

 

? 2.代码

 

 

? 3.知识点补充

 

 


977.题目1

⏰ 1.解题思路

 

? 2.代码

 

 

? 3.知识点补充