输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
第一种方法递归:
class Solution:
def Merge(self, pHead1, pHead2):
if pHead1 == None:
return pHead2
elif pHead2 ==None:
return pHead1
pMergeHead = None
if pHead1.val < pHead2.val:
pMergeHead = pHead2
pMergeHead.next = self.Merge(pHead1.next, pHead2)
else:
pMergeHead = pHead1
pMergeHead.next = self.Merge(pHead1, pHead2.next)
return pMergeHead
第二种方法循环:
def Merge(self, pHead1, pHead2):
if pHead1 == None:
return pHead2
elif pHead2 == None:
return pHead1
if pHead1.val < pHead2.val:
pMergeHead = plist = pHead1
pHead1 = pHead1.next
else:
pMergeHead = plist = pHead2
pHead2 = pHead2.next
while pHead1 and pHead2:
if pHead1.val < pHead2.val:
plist.next = pHead1
plist = plist.next
pHead1 = pHead1.next
else:
plist.next = pHead2
plist = plist.next
pHead2 = pHead2.next
if pHead1 != None:
plist.next = pHead1
elif pHead2 != None:
plist.next = pHead2
return pMergeHead