16.マージ2つのソートされたリスト
問題:
ルールの減少 - 私たちは会う合成リストする必要があることをした後、二人は単調に、当然のことながら、二つのリストを合成した後、入力リストおよび出力リストを増加させることができます。
ソリューション:
思想:
- この質問は、再帰的な実装を使用することができ、新しいリストが新しいノードを作成する必要はありません、我々は再帰的に3つの要素は以下のとおり
- 終了条件:エンドのL2 L1が空または空であるときに、2つは、リストL1およびL2と命名されています
- 戻り値:各レイヤーの呼び出しは、ソートされたリストの先頭を返します
- この再帰レベルの内容:ヴァル・L1の値が小さい場合は、ソートされたリストのヘッドと、その後l1.next接触、L2共感
- O(M + N)O(M + N)、長さL1のMMは、NNである長さL2
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==None):
return pHead2
if(pHead2==None):
return pHead1
if(pHead1.val<pHead2.val):
pHead1.next=self.Merge(pHead1.next,pHead2)
return pHead1
else:
pHead2.next=self.Merge(pHead1,pHead2.next)
return pHead2