3 ---アルゴリズムインタビュー一覧

1つのリバースリスト

実施例1: LeetCode 206。この質問は簡単ですが、それは多くの企業の面接の質問の一つです。次のように反転する前と後に示します:

 に従ってポインタの間、以下に示すように反転する過程で主に、移動されます。

クラスのソリューション{ 

    公共ListNode reverseList(ListNodeヘッド){ 
        ListNode PREV = ヌル;
         しばらく(!ヘッド= ヌル){
             // 最初に修正さhead.nextバックアップの各変更は、そうでない場合は、ヘッドが見つけることができません前にhead.next 
            ListNode nextTemp = head.next; 
             // 前回のヘッドノードの格納された情報を修正するための2 head.nextの一時 
            head.next = PREVを;
             // ヘッドノードTEMPの格納された情報を更新3。 
            PREV = ヘッド;
             // 4は継続しました横断 
            ヘッド= ; nextTemp 
        }     
        // リンクリストノードの新しいヘッド返す
        リターンPREV;         
    } 
        
} 

// 再帰バージョンの実装
クラスソリューション{ 
    
    公共ListNode reverseList(ListNodeヘッド){
         // 再帰終了条件
        IF(ヘッド== NULL || head.next == NULL戻りヘッド;
         // 再帰プロセス動作の最後の要素から開始さ 
        ListNode P = reverseList(head.next); 
        head.next.next = ヘッド; 
        head.next = NULL ;
         戻りP; 
    } 
}

LeetCode:92このような問題を抱えています

注意:リストいくつかの基本的な質問操作の場合:LeetCodeを83,86,328,2,445

2仮想ヘッドノードのリストを設定するには

 実施例1: LeetCode 203。次のように説明するためのノードを削除するには、ノード3を削除するように設定されています。

 

 最後の要素を削除するには、上記のロジックでは、最後の要素として次のNULLに、また事実です。curがノードnode前に削除する必要がありますを参照するので、しかし、問題は、最初の要素が保持していないということです。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

おすすめ

転載: www.cnblogs.com/youngao/p/11525932.html