class Solution:
def jump(self, nums: List[int]) -> int:
n = len(nums)
self.jumps = [] #记录所有的跳跃次数
self.func(nums, 0, 0)
return min(self.jumps)
def func(self, nums, pos, count): #pos为跳跃位置,count为计数
if pos >= len(nums) - 1:
self.jumps.append(count)
else:
for i in range(nums[pos], 0, -1):
self.func(nums, pos+i, count+1)
class Solution:
def jump(self, nums: List[int]) -> int:
jumps = 0 #步数
end = 0 #当前能到达的距离
farthest = 0 #向前探测[i,end]所能到达的最远距离
for i in range(len(nums)-1):
farthest = max(i+nums[i], farthest) #更新最远距离
if i == end: #走了一步
end = farthest #更新能到达的距离
jumps += 1
return jumps