题目描述
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
代码示例
from typing import List
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
# 将两个数组转换为集合
set1 = set(nums1)
set2 = set(nums2)
# 初始化一个空列表用于存放交集
result_list = []
# 遍历其中一个集合,判断是否在另一个集合中,是则添加到结果列表
for num in set1:
if num in set2:
result_list.append(num)
return result_list
# 示例
solution = Solution()
nums1 = [1, 2, 2, 1]
nums2 = [2, 2]
result = solution.intersection(nums1, nums2)
print(result)
自己看到这个寻找数组交集的问题时,首先想到的解法是通过循环遍历较短的数组,逐个检查其元素是否在较长的数组中出现。然而,通过学习代码随想录后,我意识到更为高效的解决方法,即利用集合(Set)的特性。
通过将数组转换为集合,我们可以在 O(1) 时间内判断元素是否存在。这样一来,我们只需将较短数组转换为集合,然后遍历较长数组,在集合中进行查找即可。这种方法不仅提高了查找效率,还减少了时间复杂度。对于数组交集问题,使用集合是一种更为优雅和高效的解决方案。