思路
核心思路是通过维护当前覆盖范围(cur_cover)和最大覆盖范围(max_cover)来动态规划每一步的最优跳跃。每次遍历时更新当前能到达的最远位置,当走到当前最大覆盖范围时,说明必须进行一次跳跃,此时更新最大覆盖范围为当前能到达的最远位置,并增加跳跃次数。一旦最大覆盖范围能够到达或超过数组末尾,立即返回当前的跳跃次数。
class Solution:def jump(self, nums: List[int]) -> int:if not nums:return 0n=len(nums)if n==1:return 0cur_cover=0max_cover=0count=0for i in range(n):cur_cover=max(cur_cover,i+nums[i])if i==max_cover:max_cover=cur_covercount+=1if max_cover>=n-1:return count