给定一个长度为
n的 0 索引 整数数组nums。初始位置在下标 0。每个元素
nums[i]表示从索引i向后跳转的最大长度。换句话说,如果你在索引i处,你可以跳转到任意(i + j)处:
0 <= j <= nums[i]且i + j < n返回到达
n - 1的最小跳跃次数。测试用例保证可以到达n - 1。
相比跳跃游戏I而言,这次需要输出最小跳跃次数,而且题目保证用例可以达到n - 1的位置。所以测试用例都保证可以达到的。这里注意遍历范围为0 ~ n - 2的位置即可,因为测试保障一定能达到,当n - 1时会导致步数多1.
python
class Solution:
def jump(self, nums: List[int]) -> int:
n = len(nums)
if n == 1:
return 0
step = 0
cur_end = 0
far = 0
for i in range(n - 1):
far = max(far, i + nums[i])
if i == cur_end:
step += 1
cur_end = far
return step