# coding:utf-8 """ Name : LeetCode349.py Author : qlb Contect : 17801044486@163.com Time : 2021/2/5 10:19 Desc: 两个数组的交集 """ from typing import List #解题思路 #如果用列表存储元素的话 查找某个元素的时间复杂度为O(n) 用集合存储元素的话 查找某个元素的时间复杂度为O(1) # 所以关键在于使用集合存储元素 因为集合不仅记录了元素值 也记录了元素的内存地址 # 首先将列表转换为集合 class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: nums1 = set(nums1) nums2 = set(nums2) if len(nums1) >= len(nums2): nums11 = nums1 nums22 = nums2 else: nums11 = nums2 nums22 = nums1 res = self.subIntersection(nums11,nums22) #以下使用了自带的集合求交集的方法 # res = nums1 & nums2 # res = list(res) return res def subIntersection(self,nums1,nums2): ''' :param nums1: 长度大 :param nums2: 长度小 :return: ''' res = [] for num in nums2: if num in nums1: res.append(num) return res test = Solution() res = test.intersection([1,2,2,1],[2,2]) print (res)