我已经能够找出如何按升序合并两个排序的列表,但是我很难找到相反方向的方法。如何将两个列表按降序合并为一个列表,而不在之后反转字符串?
最佳答案
你只需要以相反的方式做每件事——从尾部而不是头部取回项目,在进行比较时取两者中较大的一个,在另一个列表用完时以相反的顺序返回剩余的列表:
def merge(lst1, lst2):
if not lst1:
return lst2[::-1]
if not lst2:
return lst1[::-1]
if lst1[-1] < lst2[-1]:
return [lst2[-1]] + merge(lst1, lst2[:-1])
else:
return [lst1[-1]] + merge(lst1[:-1], lst2)
以便:
merge([2,5,9,12], [0,1,3,4,8])
将返回:
[12, 9, 8, 5, 4, 3, 2, 1, 0]