两个数组的交集

163 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述

  • 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
  • 示例 1:
    • 输入: nums1 = [1,2,2,1], nums2 = [2,2]
    • 输出: [2]
  • 示例 2:
    • 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    • 输出: [9,4]
    • 解释: [4,9] 也是可通过的
  • 提示:
    • 1 <= nums1.length, nums2.length <= 1000
    • 0 <= nums1[i], nums2[i] <= 1000

二、思路分析:

  • 返回交集:即返回数组中相同部分,并且返回的结果每个元素唯一,即返回前需要去重
  • 首先循环找出数组中相同部分,将相同部分保存到数组变量中
  • 返回前利用Set去重,返回去重后的数组

三、AC 代码:

function intersection(nums1: number[], nums2: number[]): number[] {
    let result = [];
    for(let i = 0; i < nums1.length; i++){
        for(let j = 0; j < nums2.length; j++){
            if(nums1[i] === nums2[j]){
                result.push(nums2[j])
            }
        }
    }
    return [...new Set(result)]
};

四、总结:

  • 复杂度更低的方式可以移步题解区看看HashSet + 双指针或者map解法
  • 数组去重有很多方式,这里为了代码简洁,就使用了Set查看其他方式

image.png