博客
关于我
力扣简单-链表3-21. 合并两个有序链表
阅读量:760 次
发布时间:2019-03-22

本文共 794 字,大约阅读时间需要 2 分钟。

要合并两个升序链表为一个新的升序链表,可以使用递归的方法。递归函数比较当前两个链表的头节点,选择较小的节点作为结果的下一个节点,并继续递归合并剩下的链表。这样可以确保合并后的链表仍然保持升序。

递归合并方法

  • 比较头节点:如果l1为空,直接返回l2;如果l2为空,直接返回l1。
  • 选择较小的节点:比较l1.val和l2.val,选择较小的节点作为结果的当前节点。
  • 递归合并:将当前选择的节点的下一个节点和未处理的链表递归合并。
  • 连接节点:将递归返回的新链表连接到当前节点后面。
  • 代码实现

    class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
    if l1 is None:
    return l2
    elif l2 is None:
    return l1
    elif l1.val < l2.val:
    l1.next = self.mergeTwoLists(l1.next, l2)
    return l1
    else:
    l2.next = self.mergeTwoLists(l1, l2.next)
    return l2

    代码解释

  • 递归终止条件:当其中一个链表为空时,直接返回另一个链表。
  • 比较节点值:比较l1和l2的当前节点值,决定下一步操作。
  • 递归调用:根据比较结果,调用递归函数继续处理下一个节点。
  • 连接结果:将递归返回的新链表连接到当前节点,形成最终的合并链表。
  • 这种方法的时间复杂度为O(n + m),其中n和m分别是两个链表的长度,确保合并后的链表仍然是升序排列的。

    转载地址:http://qeuwk.baihongyu.com/

    你可能感兴趣的文章
    POJ 1080 Human Gene Functions(DP:LCS)
    查看>>
    Quant 开源项目教程
    查看>>
    POJ 1088 滑雪
    查看>>
    POJ 1095 Trees Made to Order
    查看>>
    POJ 1113 Wall(计算几何--凸包的周长)
    查看>>
    poj 1125Stockbroker Grapevine(最短路)
    查看>>
    Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
    查看>>
    poj 1151 (未完成) 扫描线 线段树 离散化
    查看>>
    POJ 1151 / HDU 1542 Atlantis 线段树求矩形面积并
    查看>>
    poj 1163 数塔
    查看>>
    POJ 1177 Picture(线段树:扫描线求轮廓周长)
    查看>>
    Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)
    查看>>
    POJ 1182 食物链(并查集拆点)
    查看>>
    POJ 1185 炮兵阵地 (状态压缩DP)
    查看>>
    POJ 1195 Mobile phones
    查看>>
    POJ 1228 Grandpa's Estate (稳定凸包)
    查看>>
    poj 1236(强连通分量分解模板题)
    查看>>
    poj 1258 Agri-Net
    查看>>
    quagga 和 zebos
    查看>>
    poj 1286 Necklace of Beads
    查看>>