题目:
图解:
我们以2 3 1 1 4这个例子来做图解
我们从前往后走,要求找到能到达目标位置,且自身的值最小
设目标位置为now 即: i+nums[i]>=now 现在的now=nums.length=4
那么我们找到的第一个最值就是 i=1,nums[i]=3
现在,我们令now=i=1 再进行一遍之前的操作
那这时,我们找到了i=0,nums[i]=2的情况可以达到我们的要求
此时更新now now=0,已经回到起点了
所以我们从起点走到终点,只需要两步
代码:
class Solution {
public int jump(int[] nums) {
int count=0;
int now=nums.length-1;
while(now>0){
for(int i=0;i<now;i++){
//判断当前点是否满足条件
if(i+nums[i]>=now){
count++;
now=i;
}
}
}
return count;
}
}
结果: