454. 四数相加 II
哈希表 map
1.分治法
- count += map.get(0 - sum) || 0;
3.注意|| 0,否则输出NaN
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @param {number[]} nums3
* @param {number[]} nums4
* @return {number}
*/
var fourSumCount = function(nums1, nums2, nums3, nums4) {
let map = new Map();
let count = 0;
// 遍历前两个数组 时间复杂度 n^2
for (const n1 of nums1) {
for (const n2 of nums2) {
// 卡住
let sum = n1 + n2;
map.set(sum, (map.get(sum) || 0) + 1)
}
}
// 剩下两个数组找 n3 + n4
for (const n3 of nums3) {
for (const n4 of nums4) {
let sum = n3 + n4;
// 出现频次, 不是 count += 1
count += map.get(0 - sum) || 0;
}
}
return count;
};