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; } } }