题目
给定两个数组
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; };
坚持努力,无惧未来!