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题两个数组的交集的解法,你还知道这题的其他解法吗?欢迎在评论区留言分享!

相关推荐
你怎么知道我是队长6 分钟前
JavaScript的变量和数据类型介绍
开发语言·javascript·ecmascript
战族狼魂26 分钟前
GPT-5.6与Grok 4.5重磅发布
人工智能·算法·大模型·大语言模型
李姆斯34 分钟前
管理是否可以被完全量化
前端·产品经理·团队管理
白日焰火11 小时前
基于 OpenSpec 实现规范驱动开发
算法·交互
imuliuliang1 小时前
关于图搜索算法的性能建模与可预测性研究7
算法
名字还没想好☜1 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司1 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
心中有国也有家2 小时前
AtomGit Flutter 鸿蒙客户端:ModalBottomSheet 实战
android·javascript·学习·flutter·华为·harmonyos
江华森2 小时前
Web 开发基础:HTTP 与 REST
前端·网络协议·http
ForDreamMusk2 小时前
批量归一化
人工智能·算法·机器学习