安全性を証明するために2つのソートされたリストをマージ

タイトル説明

リストの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 == NULLQ: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と、
    } 
}

 

おすすめ

転載: www.cnblogs.com/lisen10/p/11123337.html