我编写了以下递归解决方案来合并两个列表:
基本情况是:
1) 断言两个列表都为空
2)断言只有一个列表不为空
3)减少大小写以删除元素
4) 递归情况
def merge(l1, l2):
"""
:rtype: List
"""
global res
res = []
#Base Cases
#1 assert empty
if len(l1) == 0 and len(l2) == 0: #
return res
#2assert one not empty
if len(l1) == 0 and len(l2) != 0:
return res.extend(l2)
if len(l1) != 0 and len(l2) = 0:
return res.extend(l1)
#3assert one element in both
if len(l1) = 1 and len(l2) = 1:
if l1[0] < l2[0]:
res.append(l1.pop())
res.append(l2.pop())
else:
res.append(l2.pop())
res.append(l1.pop())
return res
#4recur case
else:
return merge(l1, l2)
至于#2 assert only one is not emtty,就麻烦了,
怎么能把逻辑讲的简洁明了呢?
慕容708150
相关分类