行业知识
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。
-
初始状态:
- 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英语怎么发音?