LeetCode-55-跳躍遊戲
阿新 • • 發佈:2021-08-24
LeetCode-55-跳躍遊戲
原題連結
描述
給定一個非負整數陣列 nums
,你最初位於陣列的 第一個下標 。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後一個下標。
示例
示例 2:
輸入:nums = [3,2,1,0,4]
輸出:false
解釋:無論怎樣,總會到達下標為 3 的位置。但該下標的最大跳躍長度是 0 , 所以永遠不可能到達最後一個下標。
思路
動態規劃。首先假設終點是 i,在到達終點的前一個狀態所在的是 j(如果存在的話),到達終點時只有一種情況:j < i 並且 nums[ j ] >= i - j。而初始狀態,只有 k 中可能,k 是 num[0] 的數。
解答
class Solution { public static boolean canJump(int[] nums) { int len = nums.length; boolean[] dp = new boolean[len]; dp[0] = true; for (int i = 1; i < len; ++i) { dp[i] = false; for (int j = 0; j < i; ++j) { if (dp[j] && j + nums[j] >= i) { dp[i] = true; break; } } } return dp[len - 1]; } }
本文來自部落格園,作者:klaus08,轉載請註明原文連結:https://www.cnblogs.com/klaus08/p/15182442.html