タイトル説明
リストの2つの昇順を入力し、二つのリストをマージして、新しいノードのリストには、まだ並べ替えを昇順です。
サンプル
输入:1->3->5 , 2->4->5
输出:1->2->3->4->5->5
ソリューション
ソリューション
同時に2つのリスト・トラバーサルをリンク merge
。
/ * パブリッククラスListNode { int型のval; ListNode次= NULL; ListNode(int型のval){ this.val =ヴァル。 } } * / パブリック クラスソリューション{ パブリックListNodeマージ(ListNode LIST1、ListNode LIST2){ 場合(LIST1 == NULL)戻りLIST2。 もし(LIST2 == nullの)リターンリスト1。 ListNode P = リスト1。 ListNode Q = LIST2。 ListNode性pH = 新しい ListNode(-1); ListNode CUR = ペーハー。 一方、(!p = NULL!&& Q = NULL ){ 場合(p.val < q.val){ ListNode T = p.next。 cur.next = P; p.next = nullを。 P = T; } 他{ ListNode T = q.next。 cur.next = Q。 q.next = nullの。 Q= T。 } CUR = cur.next。 } cur.next = P == NULL?Q:P。 リターンph.next。 } }
溶液II:再帰
/ ** *単一リンクリストのための定義。 *パブリッククラスListNode { * int型のval; * ListNode次。 * ListNode(INT X){ヴァル= X。} *} * / クラスソリューション{ パブリックListNodeマージ(ListNode LIST1、ListNode LIST2){ 場合(LIST1 == NULL ) 戻りLIST2。 もし(LIST2 == nullの) リターンリスト1。 ListNode RES = nullを。 もし(list1.val < list2.val){ RES = LIST1。 res.next = マージ(list1.next、LIST2)。 } 他{ RES = LIST2。 res.next = マージ(LIST1、list2.next)。 } 戻りRESと、 } }