Leetcode---跳躍遊戲--貪婪
阿新 • • 發佈:2018-12-27
跳躍遊戲
題目連結:跳躍遊戲
思路:
- 利用動態規劃的思路:定義一個dp陣列,存放每個對應的位置所能抵達的最遠下標值,遞迴式為:dp[i] = max{dp[i-1],i+nums[i]},如果當前下標大於dp[i-1],說明當前下標是達不到的位置,故直接return false
- 對上述陣列轉化為一個int型數,即變為貪婪,上述dp陣列我們發現僅僅用到前一個數就可以得到更新,所以可以不定義陣列,那麼當前值的意義就是當前下標可以到達的最遠下標是多少,如果當前下標大於該值,說明當前下標抵達不到,return false
public boolean canJump (int[] nums) {
// //定義一個dp[]
// int[] dp = new int[nums.length];
// dp[0] = nums[0];
// for(int i=1;i<nums.length;i++) {
// if(i<=dp[i-1]) {
// dp[i] = Math.max(dp[i-1], i+nums[i]);
// }else {
// return false;
// }
// }
// return true;
int dp = nums[0];
for(int i=1;i<nums.length;i++) {
if(i<= dp) {
dp = Math.max(dp, i+nums[i]);
}else {
return false;
}
}
return true;
}