Leetcode45:跳跃游戏 II

题目描述:

给定一个长度为 n0 索引 整数数组 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. 初始化变量
    • num_c:记录跳跃次数,初始化为0。
    • position:记录当前需要到达的目标位置,初始化为数组的最后一个索引(len(nums) - 1),因为目标是到达数组的最后一个位置。
  2. 循环直到到达起始位置
    • 使用一个while循环,条件是position > 0,意味着只要还没到达数组的第一个位置(索引0),就继续循环。
  3. 寻找能够到达当前目标位置的最远起始点
    • 在每次循环中,使用一个for循环遍历从0到position(包括position)的所有位置。
    • 对于每个位置i,检查从i出发能否跳跃到或超过当前的目标位置position(即i + nums[i] >= position)。
    • 如果可以,增加跳跃次数num_c,并将position更新为当前的起始点i,然后跳出内层循环。
  4. 返回结果
    • 循环结束后,返回跳跃次数num_c

代码实现:

复制代码
class Solution:
    def jump(self, nums: List[int]) -> int:
        num_c = 0
        position = len(nums) - 1
        while position > 0:
            for i in range(position + 1):
                if i + nums[i] >= position:
                    num_c += 1
                    position = i
                    break
        return num_c
相关推荐
梁辰兴1 小时前
数据结构:排序
数据结构·算法·排序算法·c·插入排序·排序·交换排序
Lris-KK1 小时前
【Leetcode】高频SQL基础题--1731.每位经理的下属员工数量
sql·leetcode
野犬寒鸦1 小时前
力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
java·数据结构·算法·leetcode·面试
菜鸟得菜1 小时前
leecode kadane算法 解决数组中子数组的最大和,以及环形数组连续子数组的最大和问题
数据结构·算法·leetcode
楼田莉子2 小时前
C++算法专题学习——分治
数据结构·c++·学习·算法·leetcode·排序算法
一支鱼2 小时前
leetcode常用解题方案总结
前端·算法·leetcode
ulias2123 小时前
各种背包问题简述
数据结构·c++·算法·动态规划
m0_570466413 小时前
代码随想录算法训练营第二十八天 | 买卖股票的最佳实际、跳跃游戏、K次取反后最大化的数组和
java·开发语言·算法
吃着火锅x唱着歌3 小时前
LeetCode 1537.最大得分
算法·leetcode·职场和发展
数模加油站3 小时前
25高教社杯数模国赛【C题超高质量思路+可运行代码】第十弹
算法·数学建模·数模国赛·高教社杯全国大学生数学建模竞赛