-
2.17
- 依旧 for 遍历,维护 end 和 farestEnd。
- 这里是遍历到边界,所以length-1 就结束
-
2.3
- 与2.跳跃游戏不同的是,这里返回的是最少步数,那道题是判断能否跳到终点
- 所以这道题需要维护step 返回,step 的触发条件就是当前边界是否等于在这之前最远距离 farthest
- 需要三个变量 step(作为res 返回),end(边界) farthest(当前最远边界)
-
12.1
- 边界不同
- 与1不同的点在于,到边界才会step+1,因为在到达边界之前,我们必须把范围内最远的距离找到,将其作为下一个范围的落脚点
class Solution {
public int jump(int[] nums) {
int step = 0;
int farthest = 0;
int end = 0;
for(int i=0;i<nums.length-1;i++){
farthest = Math.max(farthest,i+nums[i]);
if(i==end){
step++;
end = farthest;
}
}
return step;
}
}- 在比较最大跳跃数时,更新边界end,到达end时自动跳一步
- 这里的nums-1是for循环边界,与1️⃣不同