第 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 是两个数组的长度。