349. 两个数组的交集

题目描述

 给定两个数组,编写一个函数来计算它们的交集。
原题请参考链接https://leetcode-cn.com/problems/intersection-of-two-arrays/

题解

方法一 【暴力解法】

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        res = []
        for i in nums1:
            if i in nums2 and i not in res:
                res.append(i)
        return res

方法二 【哈希表(哈希集合)】

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        set1 = set(nums1)
        set2 = set(nums2)
        if len(set1) > len(set2):
            return [x for x in set1 if x in set2]
        return [x for x in set2 if x in set1]

方法二 【双指针】

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        nums1.sort()
        nums2.sort()
        length1, length2 = len(nums1), len(nums2)
        intersection = set()
        index1 = index2 = 0
        while index1 < length1 and index2 < length2:
            num1 = nums1[index1]
            num2 = nums2[index2]
            if num1 == num2:
                intersection.add(num1)
                index1 += 1
                index2 += 1
            elif num1 < num2:
                index1 += 1
            else:
                index2 += 1
        return intersection
posted @ 2021-02-21 00:57  Bladers  阅读(29)  评论(0)    收藏  举报