36. 2つのソートされたリストをマージ

 

 このアルゴリズムは、
O(N)(マージ)

    、1.新しい保護ダミーヘッドノードをダミーCURへのポインタを設定します。
    2. L2ノードポインタノードよりL1ヴァルヴァルポインタ値の現在の値が小さい場合、へのポインタ、次のようにCURのL1、L1およびシフト後の、そうでない場合、L2、L2へとシフト後。
    図3はその後良い場所に配置されたCURに応じてポインタを移動させます。
   L1またはL2まで、ステップ4上記サイクルは空です。
   5. CURポインタの背後に残りL1又はL2。

時間複雑

2つのトラバースリンクされたリストは、時間計算量はO(N)

/ * * 
 *単独リンクリストのための定義。
 *構造体ListNode { 
 * INTヴァル。
 * ListNode *次の; 
 * ListNode(INT X):ヴァル(x)は、次の(NULL){} 
 *}。
 * / 
クラスソリューション{
 パブリック
    ListNode *マージ(ListNode * L1、ListNode * L2){ 
        ListNode *ダミー= 新しい ListNode(0 )。
        ListNode * CUR = ダミー;
        一方(L1 && L2){
             場合(L1->ヴァル<L2-> ヴァル)
            { 
                CUR - >次=L1、
                L1 = L1-> 次に; 
            } 
             
            { 
                CUR - >次に= L2、
                L2 = L2-> 次に; 
            } 
            CUR = CUR>次に; // 完了した後に後進CURを指す
        }
         // 裁判官まだ空L2、L1空に、そのリストの残りの要素を戦います。どのようにスペルするには?上の戦い?
        // モザイクの残りの要素にcur->次にによって直接読み取ったコード
         // > =次に:;(L1 L1 L2 = NULL!) - CUR
         // ; COUT << ENDL << L1
         / / COUT << L2-> <<てendlヴァル;
         // COUT << CUR>ヴァル<<てendl;
        cur->次=(L1 == NULL?L2:L1)。
        リターン dummy-> 次。
        
    }   
}。

 

おすすめ

転載: www.cnblogs.com/make-big-money/p/12306045.html