前端算法-两个数组的交集

95 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

题目

给定两个数组 nums1 和 nums2 ,返回它们的交集 。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
解释: [4,9] 也是可通过的

交集是指两个数组共同拥有的某个值,以上面的数组为例,nums1nums2这两个数组中都包含了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;
        };

坚持努力,无惧未来!