返回首页

贪心:跳跃游戏与最少步数

一、面试常考点

1. 可达性判断

维护当前最远可达位置 far

2. 最少步数

按层推进:当前步能到的边界 end 与下一步最远 far

二、细节介绍

1. Jump Game I

遍历时若 i > far 则不可达。

2. Jump Game II

每到 end 结算一步并更新边界。

三、示例代码

function jump(nums) {
  let steps = 0
  let end = 0
  let far = 0

  for (let i = 0; i < nums.length - 1; i++) {
    far = Math.max(far, i + nums[i])
    if (i === end) {
      steps++
      end = far
    }
  }

  return steps
}

四、常用应用场景

1. 分层覆盖问题

最少资源覆盖最大范围。

2. 网络传播跳数估算

在约束步数下覆盖节点。