跳跃游戏 II
# 45. 跳跃游戏 II
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。
示例 1:
输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
示例 2:
输入: nums = [2,3,0,1,4]
输出: 2
解答
每次保存下一个能到达的最远位置,到达该位置时,再设置最远能到达的位置。
/**
* @param {number[]} nums
* @return {number}
*/
var jump = function(nums) {
let curIndex = 0
let nextIndex = 0
let step = 0
for (let i = 0; i < nums.length - 1; i++) {
// nextIndex 表示每次取当前能到达的最远的index
nextIndex = Math.max(nums[i] + i, nextIndex)
// 当curIndex === 倒数第二个index 步数再加一
if (i === curIndex) {
curIndex = nextIndex
step++
}
}
return step
};
编辑 (opens new window)
上次更新: 2021/08/12, 23:39:04