题目链接:力扣
题目分析:
我们先计算数组1和数组2的各个元素的和sum1以及他们出现的次数,将其放在一个数组中newMap中,随后计算数组3和数组4中各个元素的元素和sum2,判断0-sum2在数组newMap中出现的次数
题目代码:
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @param {number[]} nums3
* @param {number[]} nums4
* @return {number}
*/
var fourSumCount = function(nums1, nums2, nums3, nums4) {
let getMap = new Map()
let count = 0
// 统计nums1和nums2数组元素之和,和出现的次数,放到map中
for(const n1 of nums1){
for(const n2 of nums2){
let sum = n1+n2
//getMap.get()的作用是动态获取索引处的值
//getMap.set()的作用是替换动态数组中指定索引的元素
getMap.set(sum,(getMap.get(sum)||0)+1)
}
}
// 找到如果 0-(c+d) 在map中出现过的话,就把map中key对应的value也就是出现次数统计出来
for(const n3 of nums3){
for(const n4 of nums4){
let sum = n4+n3
count = count + (getMap.get(0-sum)||0)
}
}
return count;
};