Jump Game

2019-08-28  本文已影响0人  瞬铭

https://leetcode.com/problems/jump-game-ii/
给定一个数组nums,数组内部都是正整数,每走到数组的index,则表明可以继续往后最大走nums[i]步,求最少需要走过多少个index则能走到最后
示例:[2,3,1,1,4]
答:2
解析:从2走到3,从3走到4,一共经过了两个index

input:[2,3,1,1,4]

  1. res = 1; pre = 0; cur = 2,i=0
    2.res=2;pre=2;cur=5;i=2
    return 2
    public int jump(int[] nums) {
                int pre = 0;//上一次循环达到的最远距离
        int cur = 0;//本次计算达到的最远距离
        int len = nums.length;
        int res = 0;//结果int,表明需要做多少步
        int i = 0;//用来循环的游标
        while (cur < len - 1) {//只要cur没有达到最后一个index,则继续循环
            res++;//每次循环,表明多走了一步,需要将res加一
            pre = cur;//更新上次走到的距离
            for (; i <= pre; i++) {//因为每次pre都会更新,即会往后走,所以在上次走到的游标i为基准,重新算走到的更远距离
                cur = Math.max(cur, i + nums[i]);
            }
        }
        return res;
    }
上一篇 下一篇

猜你喜欢

热点阅读