92件の質問:リバースリストII

A. 問題の説明

nは位置Mからの逆リスト。完全な逆転でスキャンへの旅行をご使用ください。

説明:

1つの≤M≤nの≤鎖長。

例:

入力:1-> 2-> 3-> 4-> 5-> NULL、M = 2、N = 4

出力:1-> 4-> 3-> 2-> 5-> NULL

II。問題解決のためのアイデア

問題解決のアイデア:シングルスキャンを解決するためのチェーン性質を利用。

ステップ:データ点、結果ノードへの次のデータポイントと次のノードを、ノードによって最初の点の前方に境界M及びMを発見TEMPとm個の点の最初のノード、TEMP。

ステップ2:次のデータTEMPを指すノード、一時し、データポイントは、データポイントの結果、

次のノードへの結果のポイントを結果。

ステップ3:nは境界に到達するまでの2つのステップが繰り返されます。

ステップ4:境界ノードMのデータに最初のノード、境界mの前にノード指すTEMP。

III。結果

実行時:0ミリ秒は、すべてのJavaの提出にユーザーの100.00パーセントを破りました

メモリ消費量:34.2メガバイトには、Javaの提出内のすべてのユーザーの87.11パーセントを破りました

IV。Javaコード

クラスソリューション{
     公共 ListNode reverseBetween(ListNodeヘッド、int型 M、int型N){
          場合(M ==のN)
          {
              リターンヘッド;
          } 
          {
              ListNodeすべて = 新しい ListNode(0 );
              all.next = ヘッド。
              ListNodeの一時 = すべて;
              最初ListNode = NULL ;
              以下のためにint型私= 0;私は<&&一時= M!ヌルを、私は++ 
                  {
                      最初 = TEMP。
                      温度 = temp.next。
                  }
              ListNodeデータ = temp.next。
              ListNode結果 = data.next。
              INT J = M; J <N; J ++ 
                  {
                     data.next = 温度;
                     一時 = データ。
                     データ = 結果。
                     もし(結果!= nullの
                     結果 = result.next。
                  }
                  first.next.next = データ。
                  first.next = 温度;    
                  
            返すall.next;
          }
    }
}

 

おすすめ

転載: www.cnblogs.com/xiaobaidashu/p/11759941.html