1. 程式人生 > >Leetcode---跳躍遊戲--貪婪

Leetcode---跳躍遊戲--貪婪

跳躍遊戲

題目連結:跳躍遊戲

思路:
  • 利用動態規劃的思路:定義一個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; }