小工具知识网

当前位置: 首页 > 行业知识 > 21. 合并两个有序链表

行业知识

21. 合并两个有序链表

2026-10-26 07:19:17 来源:互联网转载

21. 合并两个有序链表

()

你的 mergeTwoLists 函数用于合并两个已排序的链表。代码中存在缩进错误和一些细节问题。以下是修正后的代码以及详细注释:

class ListNode:    def __init__(self, val=0, next=None):        self.val = val        self.next = nextdef mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:    # 创建一个哑节点(dummy node)并初始化指针    dummy = ListNode(0)    temp = dummy    # 遍历两个链表,直到其中一个为空    while l1 and l2:        if l1.val  ListNode:
  • 创建哑节点:

    dummy = ListNode(0)temp = dummy
    • 创建一个哑节点 dummy,并初始化指针 temp 指向 dummy。哑节点用于简化链表操作,最终返回合并后的链表头节点。
    • 遍历两个链表,直到其中一个为空:

      while l1 and l2:    if l1.val  2 -> 4,链表 l2 为 1 -> 3 -> 4。 
      1. 初始状态:

        • dummy: 0 -> None
        • temp 指向 dummy
        • 第一次比较:

          • l1.val = 1, l2.val = 1
          • 将 l1 连接到 temp.next,移动 l1 到下一个节点
          • dummy: 0 -> 1 -> 2 -> 4
          • temp: 1 -> 2 -> 4
          • 第二次比较:

            • l1.val = 2, l2.val = 1
            • 将 l2 连接到 temp.next,移动 l2 到下一个节点
            • dummy: 0 -> 1 -> 1 -> 3 -> 4
            • temp: 1 -> 1 -> 3 -> 4
            • 继续比较并合并:

              • 继续上述过程,直到 l1 和 l2 中一个为空
              • 连接剩余的节点:

                • 将剩余的 l1 或 l2 连接到 temp.next
                • 最终 dummy 连接的链表为 0 -> 1 -> 1 -> 2 -> 3 -> 4 -> 4
                • 返回合并后的链表头节点:

                  • 返回 dummy.next 即 1 -> 1 -> 2 -> 3 -> 4 -> 4

      通过这种方式,index.php/tags-653.html" >可以将两个有序链表合并为一个新的有序链表。

  • 上一篇:揭秘网站源码查询秘籍,轻松获取源代码,一探究竟!

    下一篇:isnot英语怎么发音?