这题跟上一题http://blog.csdn.net/howtogetout/article/details/51619443不一样的地方在于,这题要求的是尽可能大的公共部分,包含了重复数字。
老样子,使用了Counter函数来计数,去重。
from collections import Counter
class Solution(object):
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
if nums1 == [] or nums2 == []:
return []
c1 = Counter(nums1)
c2 = Counter(nums2)
length1 = len(c1.keys())
length2 = len(c2.keys())
result = []
if length1 <= length2:
for i in c1.keys():
if i in c2.keys():
if c1[i] >= c2[i]:
result = result + [i] * c2[i]
else:
result = result + [i] * c1[i]
else:
for i in c2.keys():
if i in c1.keys():
if c1[i] >= c2[i]:
result = result + [i] * c2[i]
else:
result = result + [i] * c1[i]
return result