トピック:
ルールの減少 - 私たちは会う合成リストする必要があることをした後、二人は単調に、当然のことながら、二つのリストを合成した後、入力リストおよび出力リストを増加させることができます。
分析:
新しいノードであってもよいし、電流値がP1とP2、新しいノード= P1、次のノードにP1、新しいノードもpよりも小さい場合、2つの値は、次に、現在のノードの単調増加リスト来る比較次のノードに移動します。
もちろん、あなたは再帰を行うことができます。C ++標準の練習、Javaの再帰的。
手順:
C ++
クラスのソリューション{ パブリック: ListNode *マージ(ListNode * pHead1、ListNode * pHead2) { 場合(pHead1 == nullptr) リターンpHead2。 もし(pHead2 == nullptr) を返すpHead1を。 ListNode resHead(0 )。 ListNode * p =&resHead。 一方、(pHead1 && pHead2){ 場合(pHead1->ヴァル<pHead2-> ヴァル){ P >次= - ; pHead1 pHead1 = pHead1->次; } 他{ P - >次= pHead2。 pHead2 = pHead2-> 次。 } P = P-> 次。 } であれば(pHead1) P - >次= pHead1。 もし(pHead2) P - >次= pHead2。 返すresHead.nextを。 } }。
ジャワ
パブリック クラスソリューション{ パブリックListNodeマージ(ListNode LIST1、ListNode LIST2){ 場合(LIST1 == NULL)戻りLIST2。 もし(LIST2 == nullの)リターンリスト1。 もし(list1.val < list2.val){ list1.next = マージ(list1.next、LIST2)。 戻り値のリスト1。 } 他{ list2.next = マージ(LIST1、list2.next)。 リターンLIST2。 } } }