题目链接
两个数组的交集
题目描述:
给定两个数组,编写一个函数来计算它们的交集。
示例:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
这个题目上来我就理解成了数组去重。。。用了set,结果一测试发现不对。
目前能想到的方法就是,使用map来进行辅助运算。
对数组一使用map,计算每个数有几个,键为数,值为个数。
然后遍历数组二,如果数组二中的数出现在了map数组一中,对应的值减1. 加入重合数组。
var intersect = function(nums1, nums2) {
if(nums1.length===0||nums2.length===0){return []}
var map=new Map()
for(var i=0;i<nums1.length;i++)
{
if(map.has(nums1[i]))
{
map.set(nums1[i],map.get(nums1[i])+1)
}
else{
map.set(nums1[i],1)
}
}
var arr=[]
for(var i=0;i<nums2.length;i++)
{
if(map.has(nums2[i])&&map.get(nums2[i])!=0)
{
arr.push(nums2[i])
map.set(nums2[i],map.get(nums2[i])-1)
}
}
return arr;
};
今天好累,一直在跑实验,最后的结果总算差强人意,明天测试一下,如果可以的话,就快速迭代了。