合并两个排序的链表-牛客
思路
- 双指针
指针1指向链表1,指针2指向链表2
虚拟头结点的next=head,指向合并后的链表
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pHead1 ListNode类
# @param pHead2 ListNode类
# @return ListNode类
#
class Solution:
def Merge(self , pHead1: ListNode, pHead2: ListNode) -> ListNode:
# 一个已空,直接返回另一个
if pHead1==None:
return pHead2
if pHead2==None:
return pHead1
#加一个虚拟表头
dummy_head=ListNode(0)
cur=dummy_head
while pHead1 and pHead2:
#取值较小的结点
if pHead1.val<=pHead2.val:
cur.next=pHead1
#只移动取值的指针
pHead1=pHead1.next
else:
cur.next=pHead2
pHead2=pHead2.next
#指针后移
cur=cur.next
#哪个表还有剩,直接连在后面
if pHead1:
cur.next=pHead1
else:
cur.next=pHead2
#去掉虚拟表头,next指向真实的排序后链表头
return dummy_head.next