题目描述:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
答案:
非递归
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
#
def Merge(self,pHead1, pHead2):
# write code here
if pHead1==None and pHead2==None:
return None
if pHead1==None:
return pHead2
if pHead2==None:
return pHead1
pHead3 = ListNode(0)
p1 = pHead1
p2 = pHead2
if pHead1.val < pHead2.val:
pHead3 = pHead1
p1 = pHead1.next
else:
pHead3 = pHead2
p2 = pHead2.next
p3 = pHead3#每次指向要新合并的节点
while p1 and p2:
if p1.val < p2.val:
p3.next = p1
p1 = p1.next
else:
p3.next = p2
p2 = p2.next
p3 = p3.next
if p1:
p3.next = p1
else:
p3.next = p2
return pHead3
递归
def Merge(pHead1, pHead2):
# write code here
if pHead1 == None:
return pHead2
elif pHead2 == None:
return pHead1
if pHead1.val <= pHead2.val:
pHead1.next = Merge(pHead1.next, pHead2)
return pHead1
else:
pHead2.next = Merge(pHead1, pHead2.next)
return pHead2