跳跃游戏 II
js
/*
贪心算法。
遍历数组,记录当前位置能够到达的最远距离,然后更新能够到达的最远距离
当我们发现[当前位置已经到达了能够到达的最远距离],说明需要进行一次跳跃了,这时将跳跃次数加一
并将能够到达的最远距离更新为当前位置能够到达的最远距离
*/
var jump = function (nums = []) {
let len = nums.length
let maxPosition = 0 // 记录每个位置
let jumps = 0 // 最少跳跃次数
let end = 0 // 跳不动了,end就重新取最大值
for (let i = 0; i < nums.length - 1; i++) { // 最后一个不参与跳跃
maxPosition = Math.max(maxPosition, i + nums[i]) // 记录跳跃最大值
// 当前位置已经到达了能够到达的最远距离
if (i === end) {
jumps++ // 跳跃次数+1
end = maxPosition // 更新已经遍历的元素中可跳跃的最远距离
}
}
return jumps
}