四数相加 II
- LeetCode题目链接
- 卡尔老师代码随想录讲解
- 关键点: 这道题目跟两数相加很像,所以我们还是选择Map数据结构,只不过我们需要先处理两个数组之和,和的值做 key,出现的次数做 value , 然后在处理另外两个数组,再从已经存储好的Map中寻找符合要求的值,这样我们得到的 value 则为已经处理好的两个数组符合要求的二元组的数量。
- 代码:
var fourSumCount = function(nums1, nums2, nums3, nums4) {
let abMap = new Map()
let count = 0
for(let i = 0; i< nums1.length ;i++){
for(let j =0;j < nums2.length;j++) {
let absum = nums1[i]+nums2[j]
if(!abMap.has(absum)){
abMap.set(absum,1)
} else {
value = abMap.get(absum)+1
abMap.set(absum,value)
}
}
}
for(let i = 0;i < nums3.length;i++){
for(let j =0 ;j < nums4.length;j++){
let cdsum = nums3[i]+nums4[j]
let sub = 0-cdsum
if(abMap.has(sub)){
count += abMap.get(sub)
}
}
}
return count
};
- 注意:
无