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

    你可能感兴趣的文章
    Objective-C实现获取本机ip及mac地址(附完整源码)
    查看>>
    Objective-C实现获取本机系统版本(附完整源码)
    查看>>
    Objective-C实现获取桌面应用程序图标位置 (附完整源码)
    查看>>
    Objective-C实现获取电脑内存信息(附完整源码)
    查看>>
    Objective-C实现获取电脑所有盘符和容量大小 (附完整源码)
    查看>>
    Objective-C实现获取电脑网卡信息(附完整源码)
    查看>>
    Objective-C实现获取磁盘分区信息(附完整源码)
    查看>>
    Objective-C实现获取磁盘剩余空间(附完整源码)
    查看>>
    Objective-C实现获取磁盘盘符以及剩余空间(附完整源码)
    查看>>
    Objective-C实现获取系统序列号(SN)(附完整源码)
    查看>>
    Objective-C实现获得总和S所需的最小硬币数量的函数(附完整源码)
    查看>>
    Objective-C实现获得第 N 个卢卡斯数算法 (附完整源码)
    查看>>
    Objective-C实现萨内瓦片调度算法(附完整源码)
    查看>>
    Objective-C实现蓄水池算法(附完整源码)
    查看>>
    Objective-C实现蓄水池算法(附完整源码)
    查看>>
    Objective-C实现蓄水池算法(附完整源码)
    查看>>
    Objective-C实现装饰模式(附完整源码)
    查看>>
    Objective-C实现观察者模式(附完整源码)
    查看>>
    Objective-C实现观访问者模式(附完整源码)
    查看>>
    Objective-C实现视频流转换为图片(附完整源码)
    查看>>