- 题目描述
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
- 示例
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
- 解决思路
依次比较链表l1和l2中的每一个节点,将较小值放入合并链表中,要注意的是可能出现其中一个链表比较长的情况,那么直到比较结束后仍然不为空,此时只需把该链表的剩余节点全部放入合并链表中即可。
- 代码
#定义一个新的链表,用于存放合并的节点
merge = ListNode(0)
#复制这个链表起点的节点,s指向合并链表
s = merge
#在l1和l2均不为空的前提下:
while l1 and l2:
#比较l1当前节点和l2当前节点,把较小的节点放入合并链表中
if l1.val > l2.val:
merge.next = l2
l2 = l2.next
else:
merge.next = l1
l1= l1.next
merge = merge.next
#如果比较结束后l1链表中还有节点,那么剩余节点的值必然是两个链表合并后的一部分最大值
if l1:
merge.next = l1
#l2同理
if l2:
merge.next = l2
return s.next