一,问题
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
二,分析
先举一个栗子:
有如下两个链表:
我们做一个指针叫top,他指向两个链表中表头较小的那个。之后他就不动了,等着被输出
再做两个指针,一个叫up一个叫down,分别指向上链表和下链表
up=pHead1
down=pHead2
top=None
if up.val>down.val:
top=pHead2
else:
top=pHead1
top的位置确定后,up或者down就要让位给top
if top==pHead1:
up=up.next
else:
down=down.next
然后开始比较up和down的值谁大
这时还需要定义一个操作next指针的操盘手,他叫pre,让pre先指向top
pre=top
然后看up和down谁的值小,就让pre操作next指针指向谁, 然后pre跳过去占他的位置 ,并让他往后跳一个
while up and down:
if up.val<down.val:
pre.next=up
pre=up
up=up.next
直到up或者down指向了None,就让先到None的那个链表的最后一个结点指向另一个链表剩余的结点
if up==None:
pre.next=down
else:
pre.next=up
最后,输出top
三,代码