- 首先定义 一个map,key放a和b两数之和,value 放a和b两数之和出现的次数。
- 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。
- 定义变量count,用来统计 a+b+c+d = 0 出现的次数。
- 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。
- 最后返回统计值 count 就可以了
var fourSumCount = function(nums1, nums2, nums3, nums4) { let map=new Map() let count=0 for(const n1 of nums1){ for(const n2 of nums2){ const sum=n1+n2 //保存到map中,(sum,次数) //如果sum相同,次数加1 map.set(sum,(map.get(sum)||0)+1) } } for(const n3 of nums3){ for(const n4 of nums4){ const sum=n3+n4 if(map.has(0-sum)){ count+=map.get(0-sum)||0 } } } return count };
力扣第454题.四数相加II(JavaScript)
最新推荐文章于 2023-01-31 17:28:02 发布