leetcode题解两个数组的交集
两个数组的交集 II-350
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
复制代码
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/in…
首先遍历第一个数组,并在map中记录第一个数组中的每个数字以及对应出现的次数,然后遍历第二个数组,对于第二个数组中的每个数字,如果在哈希表中存在这个数字,则将该数字添加到答案,并减少哈希表中该数字出现的次数。
时间复杂度:O(m+n),其中 m 和 n 分别是两个数组的长度。
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
let map=new Map();
let num;
let result=[];
for (let i=0; i<nums1.length; i++){//用map存储nums1中num -> count 的键值对,统计每个数字出现的数量。
num=nums1[i];
let count=map.get(num);
if(map.has(num)){
map.set(num,count+1);
}
else{
map.set(num,1)
}
}
for(let i=0;i<nums2.length;i++){
num=nums2[i];
let count=map.get(num);//获取出现的次数
if(map.has(num) && count>=1){
map.set(num,count-1);
result.push(num);
}
}
return result;
};
阅读剩余
版权声明:
作者:chun
链接:https://chun53.top/828.html
文章版权归作者所有,未经允许请勿转载。
THE END