力扣——跳跃游戏 II
题目链接:
链接
题目描述:
思路:
- 一个点走到他的最大距离end,中途会经过其他点,比较得到途经这些点可走的最远距离maxPosition,
- 当遍历完这些途径点到达end后,就更新新的end为maxPosition,同时步数加1
实现代码:
class Solution {
public int jump(int[] nums) {
int step = 0;
int maxPosition = 0;
int end = 0;
//这里为什么用<nums.length - 1
//如果访问nums.length-1,恰好此时end就是nums.length-1,就会多执行一次step++
//在到达nums.length-2这个点后,一定能到达nums.length-1(题目说了可以)
for(int i=0; i<nums.length -1; i++){
maxPosition = Math.max(i+nums[i],maxPosition);
if(i == end){
end = maxPosition;
step++;
}
}
return step;
}
}