leetcode問題番号206チェーンテーブルを反転
1602 ワード
タイトルの詳細を表示するには、ここをクリックしてください.
タイトル
単一チェーンテーブルを反転します.
例:
入力:1->2->3->4->5->NULL出力:5->4->3->2->1->NULL
問題を解く構想.
単一チェーンテーブルを反転することは、チェーンテーブルで一般的な操作とみなされ、ループと再帰の2つの方法で解決されます.サイクルまずサイクルの考え方を話します.実は2つのチェーンテーブルがあり、1つは反転が必要なチェーンテーブル(以下(チェーンテーブルs)と呼ばれ、1つはすでに反転されたチェーンテーブル(以下チェーンテーブルrと呼ぶ)であり、最初はチェーンテーブルrが空のチェーンテーブルであり、チェーンテーブルsを遍歴し、1つのノードを遍歴するとチェーンテーブルsのヘッダノードを1つのノードに後方に移動し、チェーンテーブルsのヘッダノードが空になり、空にされたヘッダノードは、チェーンテーブルrのヘッダノードとしてチェーンテーブルrに挿入され、チェーンテーブルsがエンドノードに遍歴するまで繰り返し操作され、コードは以下の通りである. 再帰再帰の鍵は、まず再帰式を見つけることであり、チェーン全体の反転をチェーン上の各ノードの反転に分解することができるが、ノードの反転は、実際には、後のノードを指すことから後のノードを指すことに変換され、式に変換することは である.
reverseは、反転関数nextNodeが反転するノードを示す次のノードnextNodePointが次のノードを示す後続ポインタが反転するノードを指す
再帰式があれば,再帰式の定数値,すなわち再帰法の終了条件を見つける必要がある.反転した終了ノードはチェーンテーブルの末尾ノードであり,ノードの後続ポインタがNULLの場合に再帰を終了する.
ノードの後続ポインタが空の場合
再帰的な方式分析が終わり、コードは以下の通りです.
タイトル
単一チェーンテーブルを反転します.
例:
入力:1->2->3->4->5->NULL出力:5->4->3->2->1->NULL
問題を解く構想.
単一チェーンテーブルを反転することは、チェーンテーブルで一般的な操作とみなされ、ループと再帰の2つの方法で解決されます.
class Solution {
public ListNode reverseList(ListNode head) {
ListNode reverseHead = null, posHead = null;
ListNode curr = head;
while(curr != null) {
posHead = curr.next;
curr.next = reverseHead;
reverseHead = curr;
curr = posHead;
}
return reverseHead;
}
}
reverseは、反転関数nextNodeが反転するノードを示す次のノードnextNodePointが次のノードを示す後続ポインタが反転するノードを指す
再帰式があれば,再帰式の定数値,すなわち再帰法の終了条件を見つける必要がある.反転した終了ノードはチェーンテーブルの末尾ノードであり,ノードの後続ポインタがNULLの場合に再帰を終了する.
ノードの後続ポインタが空の場合
再帰的な方式分析が終わり、コードは以下の通りです.
class Solution {
public ListNode reverseList(ListNode node) {
if(node == null || node.next == null) {
return node;
}
ListNode reverseHead = reverseList(node.next);
node.next.next = node;
node.next = null;
return reverseHead;
}
}