原题
https://leetcode.cn/problems/jump-game-ii/description/
思路
贪心, 每次选择下一步能到的最大距离.
复杂度
时间:O(n)
空间:O(1)
Python代码
class Solution:
def jump(self, nums: List[int]) -> int:
ans = 0
# 当前到达的最大索引
curr = 0
# 下一步到达的最大索引
next = 0
for i in range(len(nums) - 1):
# 更新下一步的最远距离
next = max(next, i + nums[i])
# 已经到达边界, 需要跳
if i == curr:
ans += 1
# 更新当前能到的最远距离
curr = next
if curr >= len(nums) - 1:
break
return ans
Go代码
func jump(nums []int) int {
ans := 0
// 当前到达的最大索引
curr := 0
// 下一步到达的最大索引
next := 0
for i := 0; i < len(nums)-1; i++ {
// 更新下一步的最远距离
next = max(next, i+nums[i])
// 已经到达边界, 需要跳
if i == curr {
ans++
// 更新当前能到的最远距离
curr = next
if curr >= len(nums)-1 {
break
}
}
}
return ans
}

被折叠的 条评论
为什么被折叠?



