6.贪心算法-跳跃游戏II.py

# # LeetCode: 45.最少跳几步还得看覆盖范围
# 给定一个长度为n的0索引整数数组nums。初始位置为nums[0]。
#
# 每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,
# 你可以跳转到任意nums[i + j]处:
#
# 0 <= j <= nums[i]
# i + j < n
# 返回到达nums[n - 1]的最小跳跃次数。生成的测试用例可以到达nums[n - 1]。
#
# 示例1:
# 输入: nums = [2, 3, 1, 1, 4]
# 输出: 2
# 解释: 跳到最后一个位置的最小跳跃数是2。
# 从下标为0跳到下标为1的位置,跳1步,然后跳3步到达数组的最后一个位置。
#
# 示例2:
# 输入: nums = [2, 3, 0, 1, 4]
# 输出: 2

nums = [2,3,1,1,4]


def get_min_num(nums):
    cover = 0
    count = 0
    next = 0
    if len(nums) == 1:
        return 0

    for i in range(len(nums)):
        next = max(next, nums[i] + i)
        print('next=',next)
        if i == cover:
            if cover != len(nums)-1:
                count += 1
                cover = next
                # print(cover)
                if cover >= len(nums)-1:
                    break
            else:
                break

    return count



print(get_min_num(nums))



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值