JS力扣刷题45. 跳跃游戏 II

思路:贪心

例如,对于数组 [2,3,1,2,4,2,3],初始位置是下标 0,从下标 0 出发,最远可到达下标 2。下标 0 可到达的位置中,下标 1 的值是 3,从下标 1 出发可以达到更远的位置,因此第一步到达下标 1。

从下标 1 出发,最远可到达下标 4。下标 1 可到达的位置中,下标 4 的值是 4 ,从下标 4 出发可以达到更远的位置,因此第二步到达下标 4。

var jump = function(nums) {
    //特殊情况,只有一个元素就已经到尾巴了,不用跳
    if(nums.length == 1)return 0;
    //遍历i
    let i = 0;
    //初始化步数为1
    let res = 1;
    while(i < nums.length){
        //在第i个元素时可以直接跳到数组的尾巴
        if(i + nums[i] >= nums.length - 1)return res;
        //不可以直接跳到就步数 + 1
        res++;
        //找到下一步跳到next(在i 到 i + nums【i】之间)能够使跨度最大
        let tmp = i + nums[i];
        let next = 0;
        for(let j = i; j <= i + nums[i]; j++){
            if(tmp < j + nums[j]){
                tmp = j + nums[j];
                next = j;
            }
        }
        //更新i
        i = next;
    }
    return res;
};

你可能感兴趣的:(力扣刷题,贪心,js刷题,javascript,leetcode)