LeetCode #45 Jump Game II

题目

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
posted @ 2020-10-13 13:51  老鼠司令  阅读(68)  评论(0编辑  收藏  举报