为了账号安全,请及时绑定邮箱和手机立即绑定

按降序将两个已排序的列表合并为一个

按降序将两个已排序的列表合并为一个

料青山看我应如是 2021-06-15 17:35:57
我已经能够弄清楚如何按升序合并两个已排序的列表,但我无法找到相反方向的方法。如何在不反转字符串的情况下按降序将两个列表合并为一个?
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

你只需要以相反的方式做所有事情——从尾部而不是头部检索项目,在进行比较时选择两者中较大的一个,并在另一个用尽时以相反的顺序返回剩余的列表:


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]


查看完整回答
反对 回复 2021-06-29
  • 1 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信