描述
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。
如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:
解题思路:
特殊情况:如果有一个链表为空,返回另一个链表
如果pHead1 节点值比pHead2小,下一个节点应该是 pHead1,应该return pHead1,在return之前,指定pHead1的下一个节点应该是pHead1.next和pHead2俩链表的合并后的头结点
如果pHead1 节点值比pHead2大,下一个节点应该是pHead2,应该return pHead2,在return之前,指定pHead2的下一个节点应该是pHead1和pHead2.next俩链表的合并后的头结点
Python代码实现
class Solution:
# 返回合并后列表
def Merge(self, pHead1, pHead2):
# 递归结束条件就是有一个到头了,返回不是None的那个就好了
if not pHead1:
return pHead2
if not pHead2:
return pHead1
# 让phead1指向小的,有必要的话交换
if pHead1.val > pHead2.val:
pHead1,pHead2 = pHead2,pHead1
# 递归步骤
pHead1.next = self.Merge(pHead1.next,pHead2)
return pHead1