方法一:哈希表
方法二:python中内置集合函数
方法三:排序+双指针
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
# 方法一:O(n)
# hashmap = {}
# for i in nums1:
# hashmap[i] = 1
# for j in nums2:
# if j in hashmap:
# hashmap[j] = 2
# res = []
# for k in hashmap:
# if hashmap[k] > 1:
# res.append(k)
# return res
# 方法二:
# return list(set(nums1) & set(nums2))
# 方法三:O(nlogn+n^2)
res = []
i, j = 0, 0
nums1.sort()
nums2.sort()
while i < len(nums1) and j < len(nums2):
if nums1[i] == nums2[j]:
if not res or nums1[i] != res[-1]:
res.append(nums1[i])
i += 1
j += 1
# while 0 < i < len(nums1) and nums1[i] == nums1[i-1]:
# i += 1
# while 0 < j < len(nums2) and nums2[j] == nums2[j-1]:
# j += 1
elif nums1[i] < nums2[j]:
i += 1
else:
j += 1
return res