这题跟上一题http://blog.youkuaiyun.com/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
本文探讨了如何通过使用Counter函数来解决寻找两个整数列表之间的最大公共子集的问题,该方法涉及到去重和迭代比较两个集合的元素。详细介绍了算法步骤,包括初始化、计数、迭代求解过程,并最终返回结果。
6777

被折叠的 条评论
为什么被折叠?



