Skip to content

跳跃游戏2

js
// 给定一个非负整数数组,你最初位于数组的第一个位置。
// 数组中的每个元素代表你在该位置可以跳跃的最大长度。
// 你的目标是使用最少的跳跃次数到达数组的最后一个位置。
// 示例:
//     输入: [2,3,1,1,4]
// 输出: 2
// 解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

function fn(nums) {
    // 储存数字可以跳跃的长度面积
    let cover = 0
    for(let i = 0; i <= cover; i++){
        // 当前可跳跃面积 + 加上nums[i] 等于新的可跳跃面积
        cover = Math.max(i + nums[i], cover)
        // 如果可跳跃面积超过了数组的长度,就是可以跳跃到结尾的
        if(cover >= nums.length - 1) return i + 1
    }
    return 0
}

console.log(fn([2,3,1,1,4]))
console.log(fn([2,2,1,1,4]))
console.log(fn([2,3,1,1,0,4]))
// 给定一个非负整数数组,你最初位于数组的第一个位置。
// 数组中的每个元素代表你在该位置可以跳跃的最大长度。
// 你的目标是使用最少的跳跃次数到达数组的最后一个位置。
// 示例:
//     输入: [2,3,1,1,4]
// 输出: 2
// 解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

function fn(nums) {
    // 储存数字可以跳跃的长度面积
    let cover = 0
    for(let i = 0; i <= cover; i++){
        // 当前可跳跃面积 + 加上nums[i] 等于新的可跳跃面积
        cover = Math.max(i + nums[i], cover)
        // 如果可跳跃面积超过了数组的长度,就是可以跳跃到结尾的
        if(cover >= nums.length - 1) return i + 1
    }
    return 0
}

console.log(fn([2,3,1,1,4]))
console.log(fn([2,2,1,1,4]))
console.log(fn([2,3,1,1,0,4]))