实现
利用哈希set
进行去重,然后循环nums2,如果nums2中的元素是在去重后的num1中出现过的,就存放在set2中,因为最后要返回的是不重复的数组,所以先放在set2,让其进行去重,最后把set2转为数组
方法1
var intersection = function (nums1, nums2) {
const set1 = [...new Set(nums1)]
return set1.filter(item=>nums2.includes(item))
};
方法2
var intersection = function (nums1, nums2) {
const set1 = new Set(nums1);
const set2 = new Set();
nums2.forEach(item=>{
if(set1.has(item)){
// 交集
set2.add(item)
}
})
return [...set2]
};
方法3 哈希数组
由于题目中有写到数组长度是<=1000的,那么我们初始的时候设置数组长度为1001,然后每一个值就是对应数组的索引index,先循环nums1,给对应的索引设置value为1,然后遍历nums2,如果nums2中对应的value值存在,说明是之前在nums1中有设置值,所以这个数是交集
var intersection = function (nums1, nums2) {
const result = new Set();
// 题目中有写到数组的长度是<=1000的
const hashArr = new Array(1001)
nums1.forEach(item=>{
hashArr[item] = 1;
})
nums2.forEach(item=>{
if(hashArr[item]){
result.add(item)
}
})
return [...result];
};
标签:leetcode349,const,set2,交集,item,数组,nums1,nums2
From: https://blog.csdn.net/weixin_45799371/article/details/145263120