Skip to content

跳跃游戏 II

LeetCode-45

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
}