LeetCode #45 Jump Game II
题目
解题思路
这题用贪心的思想可以解决,针对每一个位置,寻找当前位置能跳到的最远的位置,与之前的跳跃最远位置取最大值记录下来。当走到的位置是上一次跳跃能达到的最远位置时,更新跳跃次数(再跳一次)并更新此次跳跃能到达的最远位置,为从上次跳跃的起点到当前位置的所有位置的最远跳跃位置,若此最远跳跃位置已经到达或超过终点,则退出循环结束。
代码
class Solution:
def jump(self, nums: List[int]) -> int:
jumps = 0
curEnd = 0
curFarthest = 0
for i in range(len(nums)-1):
curFarthest = max(curFarthest, i + nums[i])
if i == curEnd:
jumps += 1
curEnd = curFarthest
if curEnd >= len(nums) - 1:
break
return jumps