leetcode-数组-349-两个数组的交集

349. 两个数组的交集

题目描述(难度:简单)

  • 给定两个数组,编写一个函数来计算它们的交集。
    说明:
  • 输出结果中的每个元素一定是唯一的。
  • 我们可以不考虑输出结果的顺序。

示例1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]

示例2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]

解题思路

  • 数组 includes:遍历 num1,判断每个值是否在 num2,如果同时在 2 个数组,并且不是重复值,则添加
  • Set 结构:利用 Set 将 num1 和 num2 去重,遍历 num1,判断每个值 num2 是否存在

代码

/**
 * 利用 includes
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersection = function(nums1, nums2) {
    let res = [];
    for(let i = 0; i < nums1.length; i++) {
        let key = nums1[i];
        // 判断是否重复值,且 num2 是否存在
        if (!res.includes(key) && nums2.includes(key)) {
            res.push(key);
        }
    }
    return res;
};

/**
 * Set 结构
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersection = function(nums1, nums2) {
    // 去重
    nums1 = new Set(nums1);
    nums2 = new Set(nums2);

    let res = [];
    for(let key of nums1.keys()) {
        // num2 如果存在该值,则是交集值
        if (nums2.has(key)) {
            res.push(key);
        }
    }
    return res;
};

   转载规则


《leetcode-数组-349-两个数组的交集》 朝飞 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
leetcode-数组-1185-一周中的第几天 leetcode-数组-1185-一周中的第几天
1185. 一周中的第几天题目描述(难度:简单) 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数:day、month 和 year,分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {“Sunday”
2020-05-25
下一篇 
leetcode-数组-283-移动零 leetcode-数组-283-移动零
283. 移动零题目描述(难度:简单) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 示例: Input: [0,
2020-05-23
  目录