题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
递归版本:
# -*- 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:
return pHead2
if pHead2 == None:
return pHead1
pMergeHead = None
if pHead1.val<pHead2.val:
pMergeHead = pHead1
pMergeHead.next = self.Merge(pHead1.next,pHead2)
else:
pMergeHead= pHead2
pMergeHead.next = self.Merge(pHead1,pHead2.next)
return pMergeHead
非递归版本
# -*- 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
#非递归版本
#定义一个新的链表结点,用来存放合并后的链表
pMergeHead = head = ListNode(0)
#当pHead1与pHead2都不是空的时候,循环比较大小
while pHead1 and pHead2:
if pHead1.val<pHead2.val:
head.next = pHead1
pHead1 = pHead1.next
else:
head.next = pHead2
pHead2 = pHead2.next
#移动新链表结点
head = head.next
#pHead1、pHead2其中一个为空或两者都为空
head.next = pHead1 or pHead2
#返回第一个结点
return pMergeHead.next