45. Jump Game II蹦蹦游戏II

给定一个非负整数数组,您最初位于该数组的第一个索引处。数组中的每个元素代表该位置的最大跳转长度。目标是在最少的跳数中达到最后的索引。

Input:[2,3,1,1,4]

Output:2 (第一步从2到3, 然后从3到4)

Clue: 其实就每次选择当前数值A的后A位最大值B的位置, 然后以以B为标准重复选择后面B个数的最大值直到最后。

class Solution:
    def jump(self, nums: List[int]) -> int:
        if len(nums) <= 1: return 0
        max_pos, max_steps, res = nums[0], nums[0], 1
        for i in range(1, len(nums)):     #从第2个数开始遍历
            if max_steps < i:     #
                res += 1    #向前蹦了一次
                max_steps = max_pos        #已经蹦到最大的那个数的位置
            max_pos = max(max_pos, nums[i] + i)     #定位下一次蹦位置
        return res

 

 

你可能感兴趣的:(LeetCode(Hard))