• 2.17

    • 依旧 for 遍历,维护 end 和 farestEnd。
    • 这里是遍历到边界,所以length-1 就结束
  • 2.3

    • 2.跳跃游戏不同的是,这里返回的是最少步数,那道题是判断能否跳到终点
    • 所以这道题需要维护step 返回,step 的触发条件就是当前边界是否等于在这之前最远距离 farthest
    • 需要三个变量 step(作为res 返回),end(边界) farthest(当前最远边界)
  • 12.1

    1. 边界不同
    2. 与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️⃣不同