45. 跳跃游戏II
算法
- 核心思想:使用贪心算法模拟跳跃过程,按层次遍历的思想解决问题
- 当前位置的覆盖范围:表示当前跳跃次数能够到达的最远位置
- 下一次跳跃的覆盖范围:表示增加一次跳跃后能够到达的最远位置
- 关键变量:
cur:当前处理的位置。dist:当前跳跃次数能够到达的最远位置。next:下一跳能够到达的最远位置。
- 跳跃过程:
- 初始化跳跃次数
res = 0,起点为cur = 0 - 在当前跳跃的范围内(从
cur到dist),计算下一跳的最远位置next - 当
dist超过或等于数组最后一个位置时,结束跳跃。
- 初始化跳跃次数
- 步数增加:
- 每遍历完当前跳跃的范围时,更新到下一跳的最远位置
dist = next,并增加跳跃次数res
- 每遍历完当前跳跃的范围时,更新到下一跳的最远位置
复杂度分析
- 每个位置最多访问一次,因此时间复杂度为
O(n) - 空间复杂度为
O(1)
C++ 代码
|
|
Python 代码
|
|
Go 代码
|
|