剣指Offer_16.2つのソートされたチェーンテーブルを結合する

1455 ワード

タイトルの説明
2つの単調に増加したチェーンテーブルを入力し、2つのチェーンテーブルの合成後のチェーンテーブルを出力します.もちろん、合成後のチェーンテーブルは単調で減少しない規則を満たす必要があります.
考え方:
この問題の構想は、2つのチェーンテーブルのヘッダノードを順次比較し、小さなヘッダノードを取り出し、ヘッダノードが存在するチェーンテーブルがヘッダノードを更新した後、別のチェーンテーブルとヘッダノードのサイズを比較し、残りの空でないチェーンテーブルをソートされたチェーンテーブルの後ろに接続することに似ている.
Solution:
Python

# -*- 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 is None or pHead2 is None:   #          ,            ,         
            return pHead1 or pHead2
        
        dummy1 = dummy = ListNode(-1)   #          ,dummy          ,dummy1            
        while pHead1 and pHead2:   #                        
            if pHead1.val >= pHead2.val:   #pHead2      pHead1    
                tmp = pHead2.next   #tmp                  
                pHead2.next = None   #  pHead2    
                dummy.next = pHead2   # pHead2      dummy     
                pHead2 = tmp   #  pHead2    
            elif pHead1.val < pHead2.val:
                tmp = pHead1.next
                pHead1.next = None
                dummy.next = pHead1
                pHead1 = tmp
            dummy = dummy.next   #dummy               
        dummy.next = pHead1 or pHead2   #          ,            dummy    
        return dummy1.next