LeetCode349两个数组的交集

# 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)
原文地址:https://www.cnblogs.com/cnugis/p/14376457.html