classSolution:defintersect(self, nums1: List[int], nums2: List[int])-> List[int]:
res =[]iflen(nums1)<len(nums2):
nums1,nums2 = nums2,nums1
for i inrange(len(nums2)):if nums2[i]in nums1:del nums1[nums1.index(nums2[i])]
res.append(nums2[i])return res
法2:使用哈希表(每次重复,就加入结果,并且value值-1)
classSolution:defintersect(self, nums1: List[int], nums2: List[int])-> List[int]:
dic,res ={},[]iflen(nums1)<len(nums2):
nums1,nums2 = nums2,nums1
for n in nums1:if n in dic:
dic[n]+=1else:
dic[n]=1for n in nums2:if n in dic:if dic[n]!=0:
res.append(n)
dic[n]-=1return res
法3:如果给定数组是排好序的,使用双指针法
classSolution:defintersect(self, nums1: List[int], nums2: List[int])-> List[int]:#如果给定数组排好序
nums1.sort()
nums2.sort()
i,j,res =0,0,[]while i <len(nums1)and j <len(nums2):if nums1[i]== nums2[j]:
res.append(nums1[i])
i,j = i+1,j+1elif nums1[i]>nums2[j]:
j +=1else:
i +=1return res