🏃‍♂️ Jump Game II アルゴリズム詳細解析

⚡ アルゴリズムの計算量
時間計算量: O(n) - 配列を一度だけスキャン
空間計算量: O(1) - 定数の追加メモリのみ使用

🔄 アルゴリズムの流れ

1
各位置で到達可能な最遠距離を計算
2
現在のジャンプ範囲の終端に到達したらジャンプ実行
3
次のジャンプ範囲を発見した最遠距離に更新
4
目標に到達するまで繰り返し

📊 Example 1: nums = [2,3,1,1,4]

🎮 インタラクティブデモ

02
13
21
31
44
jumps = 0
currentEnd = 0
farthest = 0
開始状態: インデックス0からスタート

📊 Example 2: nums = [2,3,0,1,4]

🎮 インタラクティブデモ

02
13
20
31
44
jumps = 0
currentEnd = 0
farthest = 0
開始状態: インデックス0からスタート

🧠 アルゴリズムの核心理念

グリーディアプローチ: 各段階で最も遠くまで到達できる選択肢を保持し、必要な時点で最適なジャンプを実行します。

重要なポイント:

// 核心ロジック for (let i = 0; i < n - 1; i++) { // 現在位置から到達可能な最遠距離を更新 farthest = Math.max(farthest, i + nums[i]); // 現在のジャンプ範囲の終端に到達 if (i === currentEnd) { jumps++; // ジャンプ実行 currentEnd = farthest; // 次の範囲設定 if (currentEnd >= n - 1) break; } }