相比1,要求出到达最后一个元素的最小跳跃次数
还是看覆盖面,每一次都求出来最大覆盖距离;
如果能覆盖到最后一个,那么就res+1返回;
否则就判断是否到达之前一次覆盖距离的最大值,如果达到,更新覆盖距离,res+1;
java
class Solution {
public int jump(int[] nums) {
if(nums.length == 1){
return 0;
}
int cur = 0;
int pre = 0;
int res = 0;
for(int i = 0;i < nums.length;i++){
cur = Math.max(cur,i + nums[i]);
if(cur >= nums.length - 1){
res++;
break;
}
if(i == pre){
pre = cur;
res++;
}
}
return res;
}
}