LeetCode 350 - 两个数组的交集
题目描述
1. 考虑重复元素的交集
给你两个整数数组 nums1 和 nums2,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(取较小值)。
2. 不考虑重复元素的交集
给定两个数组,返回它们的交集。输出结果中的每个元素一定是唯一的。
解题思路
1. 考虑重复元素(排序 + 双指针)
1 | def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: |
2. 不考虑重复元素(集合运算)
1 | def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: |
复杂度分析
考虑重复元素的解法
- 时间复杂度:O(nlogn),主要是排序的开销
- 空间复杂度:O(min(n,m)),用于存储结果
不考虑重复元素的解法
- 时间复杂度:O(n),集合操作的时间
- 空间复杂度:O(n),用于存储集合
需要掌握的知识点
双指针技巧:
- 双指针的移动策略
- 如何处理有序数组
集合操作:
- 集合的创建:
set()
- 集合的交集运算:
&
- 集合转列表:
list()
- 集合的创建:
Python 语法:
- 列表的排序:
sort()
- 列表的添加元素:
append()
- 集合的基本操作
- 列表的排序:
算法思维:
- 如何处理重复元素
- 如何选择合适的数据结构
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Never Settle!
评论