题目:
方法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来储存,所以时间复杂度上优于第一种方法。