跳跃游戏2
解析:
/**
* 思路:
* 方法: 贪心+动态规划
* 我们知道贪心需要找到最大的值,在题目中我们可以得知,无论怎么走我们都能到达最后一个位置,
* 如果我们到达最后一个位置那么我们就没有必要再去进行,因此在遍历过程中我们不能遍历最后一个元素
*
* 我们需要知道的是,当我们在第一格的时候就已经出现了一个区间,这个区间就是我们能够移动的区间
* 举个例子: nums = [2,3,1,1,4] 在这个数组中,刚开始我们的可移动的区间是{1,2} 又因为无论如何移动我们都可以走出这个区间,
* 本着贪心的思想,我们要走最少的步数走出这个区间,那么我们就需要在这个区间中找到走的最远的那个,而这一步一定会跳出原来的区间
* 当跳出这个区间的时候需要步数+1
*
*/
class Solution {
public int jump(int[] nums) {
int k =0;
int end =0;
int step=0;
for(int i = 0 ;i < nums.length-1;i++){
k=Math.max(k,i+nums[i]);
if(i==end){
step++;
end =k;
}
}
return step;
}
}