LeetCode 21 合并两个有序链表Python代码的两处逻辑疑问
合并两个有序链表代码疑问解答
疑问1:循环结束后直接赋值剩余链表是否只会添加第一个节点
不会。
链表的每个ListNode实例的next属性本身就指向了下一个节点,剩余的l1/l2本身就是一段已经串好的完整有序链表的头节点。执行tail.next = l1之后,tail的下一个节点就接到了这段剩余链表的头部,自然就带上了后续所有节点,不需要逐个遍历追加。
不需要更新l1和tail的原因:此时两个链表中已经有一个遍历完成,没有剩余节点需要再比较拼接,后续不需要再修改链表的指向,所以不需要移动tail指针,也不需要修改l1/l2的指向。
疑问2:返回head.next是否会返回完整链表
是。
链表的标识逻辑就是以头节点作为整个链表的代表,函数返回的head.next是合并完成后整个链表的头节点引用。调用方拿到这个头节点之后,就可以通过不断访问next属性遍历到从该节点开始、直到next为None的所有节点,不需要额外返回其他内容。
内容的提问来源于stack exchange,提问作者dasani7
相关产品推荐
相关产品推荐

