?目录
✅ 454.四数相加II
➡️ 383.赎金信
➡️ 15.三数之和
➡️ 18.四数之和
454.四数相加II
⏰ 1.解题思路
- 定义一个map,key用来存放a和b的两数之和,value用来存两数之和出现的次数
- 将四个数组两两分组,nums1和nums2、nums3 和 nums4
- 定义变量count,统计四数之和为0 的次数
- 在遍历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.知识点补充