思路:用哈希表分别统计两个列表中元素出现的次数,然后取min
class Solution(object):
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
d1={}
d2={}
for num in nums1:
if num not in d1.keys():
d1[num]=1
else:
d1[num]+=1
for num in nums2:
if num not in d2.keys():
d2[num]=1
else:
d2[num]+=1
result=[]
for key in d1.keys():
if key not in d2.keys():
continue
else:
value=min(d1[key],d2[key])
for i in range(value):
result.append(key)
return result
当然,更为简洁的做法是采用集合set:
class Solution(object):
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
inter = set(nums1) & set(nums2)
l = []
for i in inter:
l += [i] * min(nums1.count(i), nums2.count(i))
return l