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