剣指Offer-Phython-2つの並べ替えチェーンテーブルをマージ

2110 ワード

テーマ: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