思想:每次在上次能跳到的范围(end)内选择一个能跳的最远的位置(也就是能跳到max_far位置
class Solution {
public int jump(int[] nums) {
int end = 0; //上次跳跃可达范围右边界(下次的最右起跳点)
int maxFar = 0; //目前能跳到的最远位置
int step = 0; // 跳跃次数
for(int i = 0; i < nums.length - 1; i++){
maxFar = Math.max(maxFar, nums[i]+i);
// 到达上次跳跃能到达的右边界了
if(i == end){
end = maxFar;// 目前能跳到的最远位置变成了下次起跳位置的有边界
step++; // 进入下一次跳跃
}
}
return step;
}
}
的点)作为下次的起跳点 !