剣指Offer-Phython-2つの並べ替えチェーンテーブルをマージ
2110 ワード
テーマ:2つのソートされたチェーンテーブルをマージ
2つの単調に増加したチェーンテーブルを入力し、2つのチェーンテーブルの合成後のチェーンテーブルを出力します.もちろん、合成後のチェーンテーブルは単調で減少しない規則を満たす必要があります.
考え方:2つのチェーンテーブルが秩序化されているため、それを統合し、2つのポインタを統合する方法を使用します.大まかな手順:2つのポインタがそれぞれ2つのチェーンテーブルのヘッダを指すように設定し、新しいチェーンテーブルを定義します.2つのポインタのノードサイズを比較し、小さなノードを新しいチェーンテーブルに挿入し、そのうちの1つが末尾になるまで2つのチェーンテーブルを後方に移動し続け、新しいチェーンテーブルが別の非空のチェーンテーブルに挿入されます.
コード:
2つの単調に増加したチェーンテーブルを入力し、2つのチェーンテーブルの合成後のチェーンテーブルを出力します.もちろん、合成後のチェーンテーブルは単調で減少しない規則を満たす必要があります.
考え方:2つのチェーンテーブルが秩序化されているため、それを統合し、2つのポインタを統合する方法を使用します.大まかな手順:2つのポインタがそれぞれ2つのチェーンテーブルのヘッダを指すように設定し、新しいチェーンテーブルを定義します.2つのポインタのノードサイズを比較し、小さなノードを新しいチェーンテーブルに挿入し、そのうちの1つが末尾になるまで2つのチェーンテーブルを後方に移動し続け、新しいチェーンテーブルが別の非空のチェーンテーブルに挿入されます.
コード:
# -*- 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:
return pHead2
elif pHead2 is None:
return pHead1
p = pHead1
q = pHead2
h = new_head = ListNode(None)
while p and q:
if p.val <= q.val:
h.next = p
p = p.next
else:
h.next = q
q = q.next
h = h.next
if p:
h.next = p
if q:
h.next = q
return new_head.next