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
python

浙公网安备 33010602011771号