LeetCode -- 349. 两个数组的交集(简单)

349. 两个数组的交集

题目描述

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

输入/输出示例

bash 复制代码
示例 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

  • 将一个数组转成Set去重,遍历另一个数组,看其值是不是在Set中。
  • 这样的问题就是结果可能存在重复,所以结果也要用Set处理
JS代码实现
javascript 复制代码
const intersection = (nums1, nums2) => {
    const set1 = new Set(nums1);
    const result = new Set();

    for (const num of nums2) {
        if (set1.has(num)) {
            result.add(num);
        }
    }
    return Array.from(result);
};
复杂度分析
  • 时间复杂度:O(m + n)
  • 空间复杂度:O(min(m, n))

解法2

  • 将两个数组都转出Set,如此,两个Set中,都不存在重复元素。
JS代码实现
javascript 复制代码
const intersection = (nums1, nums2) => {
    const set1 = new Set(nums1);
    const set2 = new Set(nums2);
    const result = [];

    for (const num of set1) {
        if (set2.has(num)) {
            result.add(num);
        }
    }
    return result;
}
复杂度分析
  • 时间复杂度:O(m + n)
  • 空间复杂度:O(m + n)

两种算法对比

  • 两种算法没有太大的区别,算法1只将一个数组转成了Set,空间利用上较好。
  • 算法2将两个数组都转成了Set,当两个数组很长,且存在重复元素时,该算法较优。

结语

本文主要介绍了LeetCode第349题两个数组的交集的解法,你还知道这题的其他解法吗?欢迎在评论区留言分享!

相关推荐
许同16 小时前
JS-WPS 自动化办公(3)数据整理-找数据
开发语言·javascript·wps
rqtz16 小时前
前端相关动画库(GSAP/Lottie/Swiper/AOS)
前端·swiper·lottie·gsap·aos·font-awsome
中國龍在廣州16 小时前
35天,成了AI 模型的斩杀线
大数据·人工智能·深度学习·算法·机器人
C_心欲无痕19 小时前
前端如何实现 [记住密码] 功能
前端
多米Domi0111 天前
0x3f第33天复习 (16;45-18:00)
数据结构·python·算法·leetcode·链表
qq_316837751 天前
uni.chooseMedia 读取base64 或 二进制
开发语言·前端·javascript
罗湖老棍子1 天前
【例4-11】最短网络(agrinet)(信息学奥赛一本通- P1350)
算法·图论·kruskal·prim
方圆工作室1 天前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
Lips6111 天前
2026.1.16力扣刷题
数据结构·算法·leetcode
Zoey的笔记本1 天前
2026告别僵化工作流:支持自定义字段的看板工具选型与部署指南
大数据·前端·数据库