https://leetcode.com/problems/jump-game-ii/
解题思路:本题可以用动态规划和贪心的思想来做,但是动态规划时间复杂度太大,故采用贪心,找到能跳到末尾的最靠前的一跳,跳数加一,更新这个位置为新的末尾,再来找最靠前的一跳。贪心的思想
class Solution {
public int jump(int[] nums) {
if(nums.length <=1)return 0;
// int[] dp = new int[nums.length];
// for(int i=1;i<nums.length;i++){
// for(int j=0;j<i;j++){
// if(nums[j] >= i-j){
// dp[i] = dp[i] == 0? dp[j]+1 :Math.min(dp[j]+1,dp[i]);
// }
// }
// }
// return dp[nums.length-1];
int count=0;
int end = nums.length-1;
while(end !=0){
int point = end;
for(int i=0;i<end;i++){
if(nums[i] >= end -i){
point = Math.min(i,point);
}
}
end = point;
count++;
}
return count;
}
}