合并两个排序的单链表(python)

具体过程:

  • step 1:判断空链表的情况,只要有一个链表为空,那答案必定就是另一个链表了,就算另一个链表也为空。
  • step 2:新建一个空的表头后面连接两个链表排序后的节点,两个指针分别指向两链表头。
  • step 3:遍历两个链表都不为空的情况,取较小值添加在新的链表后面,每次只把被添加的链表的指针后移。
  • step 4:遍历到最后肯定有一个链表还有剩余的节点,它们的值将大于前面所有的,直接连在新的链表后面即可。

 

 

 

 

 

 

 

 

def Merge(self , pHead1: ListNode, pHead2: ListNode) -> ListNode:
        # write code here
        #一个已经为空了,直接返回另一个
        if pHead1 == None:
            return pHead2
        if pHead2 == None:
            return pHead1
        #加一个表头
        head = ListNode(0)
        cur = 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
        #返回值去掉表头
        return head.next
posted @ 2022-12-01 15:29  小仙女、  阅读(201)  评论(0)    收藏  举报