题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
目标:对两个链表进行比较后,再合并排序
对于比较:每次取出一个数之后比较
对于合并排序:依次比出比较中的较小值,然后合并
将数据存储到链表中,如果使用pHead1和pHead2中的最小值首先作为存储的头结点的话,需要增加的比较次数会增多,首先需要比较pHead1和pHead2中是否有为空的表,如果为空就直接获值或返回空值,然后需要再比较pHead1和pHead2中头结点的较小值作为初始节点存入。但如果设置两个节点存入的话,比较次数会减少,虽然会增大空间开销,但仅含有val和next两个变量的链表结构体空间开销相对较小,因此采取先设置两个链表变量。
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回合并后列表
def Merge(self, pHead1, pHead2):
# if not pHead1:
# return pHead2
# if not pHead2:
# return pHead1
# if pHead1.val > pHead2.val:
# last = pHead2
# else:
# last = pHead1
last = temp = ListNode(0)
while pHead1 and pHead2:
if pHead1.val > pHead2.val:
temp.next = pHead2
pHead2 = pHead2.next
else:
temp.next = pHead1
pHead1 = pHead1.next
temp.next = pHead1 or pHead2
return last.next