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

    你可能感兴趣的文章
    OpenCV 4.1.0版drawContours
    查看>>
    opencv glob 内存溢出异常
    查看>>
    opencv Hog Demo
    查看>>
    opencv Hog学习总结
    查看>>
    opencv Mat push_back
    查看>>
    opencv putText中文乱码
    查看>>
    OpenCV Python围绕特定点将图像旋转X度
    查看>>
    opencv resize
    查看>>
    opencv SVM分类Demo
    查看>>
    OpenCV VideoCapture.get()参数详解
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>
    OpenCV 人脸识别 C++实例代码
    查看>>
    OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
    查看>>
    Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
    查看>>
    opencv 模板匹配, 已解决模板过大程序不工作的bug
    查看>>
    OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
    查看>>
    opencv&Python——多种边缘检测
    查看>>
    opencv&python——高通滤波器和低通滤波器
    查看>>