题目描述
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
# -*- 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
#新建一个链表
self.__head = ListNode(0)
cur = self.__head
#循环遍历p1和p2,那个节点的值小,cur.next指向哪个节点(前提是两个链表p1和p2都是递增链表,所以该方法可用)
while pHead1 is not None and pHead2 is not None:
if pHead1.val <= pHead2.val:
cur.next = pHead1
#用完后,p1指向下个节点,继续对比
pHead1 = pHead1.next
else:
cur.next = pHead2
# 用完后,p2指向下个节点,继续对比
pHead2 = pHead2.next
#cur指向p1或p2,下次循环前,将cur指向cur.next
cur = cur.next
#循环出来后,可能会涉及到p1或p2链表的节点没有取完(指向完)
#列:p1=[1,3,4,5] p2=[2,7,8,9,10]
#因为p1的值优先取完(这么解释更容易理解,实际上是指向),当循环退出的时候,p2的[7,8,9,10]还未取
if pHead1 is None:
cur.next = pHead2
elif pHead2 is None:
cur.next = pHead1
#因为有最初新建的节点[0],所以返回
return self.__head.next