题目:
方法1:
每次pop出nums2中的第一个元素,查找nums1中是否存在。
若存在,将该元素放入result中,并删除nums1中的该元素。
class Solution: def intersect(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ result = [] while len(nums2) != 0: x = nums2.pop(0) if x in nums1: result.append(x) nums1.remove(x) return result
方法2:
遍历nums1中的元素,设置一个dict
将键值设置为元素,value为出现次数
接下来每次pop出nums2中的第一个元素,若存在于dict中
则将该元素放入result中,并且dict中该元素对应的value-1
class Solution: def intersect(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ dict1 = {} result = [] for i in range(len(nums1)): if nums1[i] not in dict1: dict1[nums1[i]] = 1 else: dict1[nums1[i]] += 1 while len(nums2) != 0: x = nums2.pop(0) if x in dict1 and dict1[x] > 0: result.append(x) dict1[x] -= 1 return result此方法由于使用了Hash Table来储存,所以时间复杂度上优于第一种方法。