Jump Game
A = [2,3,1,1,4], return true.
A = [3,2,1,0,4], return false. Basic Idea:
Induction Rule: dp[i] = true, if dp[i + available step number] == true Base Case: dp[-1] = true, 即终点一定为trueclass Solution { public boolean canJump(int[] nums) { boolean[] dp = new boolean[nums.length]; dp[nums.length - 1] = true; for (int i = nums.length - 2; i >= 0; --i) { for (int step = nums[i]; step > 0; step--) { if (i + step < nums.length && dp[i + step]) { // 如果在 i 格子所能走的步数范围内能走到 true 的格子,则表示能走到终点 dp[i] = true; continue; } } } return dp[0] == true; } }class Solution { public boolean canJump(int[] nums) { if (nums.length == 1) return true; int right = 0; for (int i = 0; i < nums.length; ++i) { if (i > right) return false; if (i + nums[i] > right) { right = i + nums[i]; if (right >= nums.length - 1) return true; }; } return false; } }