class Solution {
public int jump(int[] nums) {
if(nums.length == 1){
return 0;
}
// 当前覆盖的最远下标
int curIndex = 0;
// 最远的下标
int maxIndex = 0;
// 步数
int step = 0;
for(int i=0; i<nums.length; i++){
// 先更新覆盖的最远下标
maxIndex = Math.max(maxIndex,nums[i]+i);
// 说明再跳一步就到末尾了
if(maxIndex >= nums.length - 1){
step++;
break;
}
// 走到当前覆盖的最远下标时,更新下一步可达的最远下标
if(i == curIndex){
curIndex = maxIndex;
step++;
}
}
return step;
}
}
运行结果: