4

两个数组的交集

·2 分钟

🟢 Easy · 🏷️ 数组、哈希表、集合 · LeetCode#349

📖 题目

给定两个数组,返回它们的交集——结果里每个元素只出现一次,顺序不限。

输入输出
nums1=[1,2,2,1], nums2=[2,2][2]
nums1=[4,9,5], nums2=[9,4,9,8,4][9,4]

🆕 新知识

Python 的 set 自带去重,还直接支持集合运算:

s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 & s2   # {2, 3} 交集
s1 | s2   # {1, 2, 3, 4} 并集
s1 - s2   # {1} 差集

需要去重或频繁判断"在不在"的场景,set 通常比 list 合适——list 查找是 O(n),set 是 O(1)。

💡 思路

两个数组的交集本质就是两个集合的交集,转成 set 之后用 & 直接算。

💻 代码

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        return list(set(nums1) & set(nums2))

LeetCode 要求返回 List[int],所以最后要用 list() 转一次。时间复杂度 O(n + m),空间复杂度 O(n + m),n、m 是两个数组的长度。