# 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)