leetcode #45 跳跃游戏2

题目描述
leetcode #45 跳跃游戏2_第1张图片
其实这道题和55题思路差不多,也是用贪心算法,这道题的前提是总能到达最后一个位置,如果要用最少的跳数到达末尾,那不用跳是最好的情况,只有当前位置超过可到达的最远位置时,这时表示必须要有跳了,跳数加1,然后从当前位置跳动下一跳能到达最远位置的位置。
代码

class Solution {
    public int jump(int[] nums) {
        if(nums.length < 2) {//数组长度小于2,说明没有值或只有一个值,不用跳
            return 0;
        }
        int current = nums[0];//当前可到达的最远位置
        int next  = nums[0];//遍历过程中,记录下一步可到达最远位置的位置
        int min = 1;
        for(int i = 1; i < nums.length; i++) {
            if(i > current) {//不能再向前移动了,必须跳
                min++;
                current = next;//更新当前位置为下一步可到达最远位置的位置
            }
            if(next < nums[i] + i) {
                next = nums[i] + i;
            }
        }
        return min;
    }
}

运行结果
leetcode #45 跳跃游戏2_第2张图片

你可能感兴趣的:(算法)