博客
关于我
力扣简单-链表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/

    你可能感兴趣的文章
    RabbitMQ - 死信、TTL原理、延迟队列安装和配置
    查看>>
    PHP数据访问的多重查询(租房子查询)
    查看>>
    RabbitMQ - 如保证消息的可靠性?(消息确认、消息持久化、失败重试机制)
    查看>>
    RabbitMQ - 基于 SpringAMQP 带你实现五种消息队列模型
    查看>>
    php数组函数分析--array_column
    查看>>
    php数组去重复数据的小例子
    查看>>
    php数组实现:哈希 +双向链表
    查看>>
    PHP数组排序函数array_multisort()函数详解(二)
    查看>>
    php数组的几个函数和超全局变量
    查看>>
    PHP文件上传详解
    查看>>
    PHP文件锁
    查看>>
    php文本框输入制定文本,php – 当用户没有向文本框输入任何内容时...
    查看>>
    PHP时间戳和日期相互转换操作总结
    查看>>
    php时间戳知识点,php 时间戳函数总结与示例
    查看>>
    php更新数据库失败,php – 无法更新MySQL数据库
    查看>>
    php机器人聊天对话框,基于AIML的PHP聊天机器人
    查看>>
    PHP查找数组中最大值与最小值
    查看>>
    php查最大值,在PHP数组中查找最大值
    查看>>
    php标签筛选,关于PHP CodeIgniter框架中通过<a>标签和url做多条件分类筛选
    查看>>
    php根据年月日计算年龄
    查看>>