代码随想录算法训练营第五天(2)|349. 两个数组的交集

68 阅读1分钟

题目描述

给定两个数组 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) 时间内判断元素是否存在。这样一来,我们只需将较短数组转换为集合,然后遍历较长数组,在集合中进行查找即可。这种方法不仅提高了查找效率,还减少了时间复杂度。对于数组交集问题,使用集合是一种更为优雅和高效的解决方案。