[leetcode 10-05] 三、跳跃游戏 II (贪心算法)

在这里插入图片描述

class Solution:
    def jump(self, nums: List[int]) -> int:
        # 和前面一题不一样,这题是求最少的跳跃次数
        # 贪心算法:找出下一步能到的区间,并从区间中取出下下一步能到达最远位置的点作为下一步到达的点

        length = len(nums)
        if length == 1:
            return 0
        left, right = 1, nums[0]
        step = 1
        while right < length - 1:
            for i in range(left, right + 1):  
                # 遍历当前能到达的所有点,取出下一次能到达的最远位置的点,并用left和right记录该点下一次能到达的区间
                if nums[i] + i > right:  
                    right = nums[i] + i  # right更新,left更新
                    left = i + 1
            step += 1

        return step

在这里插入图片描述

这个解法大致的思路是这样的,因为能跳的更远,所以有更多的机会接触到下一个跳得更远的数

猜你喜欢

转载自blog.csdn.net/weixin_45492560/article/details/120617705