持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
题目
给定两个数组
nums1和nums2,返回它们的交集 。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
解释: [4,9] 也是可通过的
交集是指两个数组共同拥有的某个值,以上面的数组为例,
nums1和nums2这两个数组中都包含了4和9,所以4和9就是交集
题解
拿到这两个数组之后需要先对其进行去重,我们这里使用
Set数据结构进行去重,我们声明set1变量和set2变量,然后我们使用new Set()将他们的值变成一个空的set数据结构,然后再声明一个res变量,这个变量是一个空数组,用于存放最终的交集数,然后我们使用循环进行循环nums1数组,每次循环我们使用set数据结构中的has方法去判断当前循环下nums1的值是否在set1中,如果不在则利用set数据结构中的add方法将当前nums1的值存储到set1中,即可完成去重,nums2也需进行这样的操作,不过nums2对应的变量是set 2,两个数组去玩重之后,我们在使用循环去循环set1变量,每次循环通过if判断结合set2.has方法,判断当前循环下set1的值是否在set2中,如果在set2中则通过push方法追加到res数组中,不在则不做任何操作进入下一轮循环,最后把res数组返回出去即可
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function (nums1, nums2) {
let set1 = new Set();
let set2 = new Set();
let res = [];
for (let j = 0; j < nums1.length; j++) {
if (!set1.has(nums1[j])) {
set1.add(nums1[j]);
}
}
for (let k = 0; k < nums2.length; k++) {
if (!set2.has(nums2[k])) {
set2.add(nums2[k]);
}
}
for (const i of set1) {
if (set2.has(i)) {
res.push(i);
}
}
return res;
};
坚持努力,无惧未来!