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