算法通关村第十七关:黄金挑战-跳跃游戏问题

黄金挑战-跳跃游戏问题

1. 跳跃游戏

LeetCode 55
https://leetcode.cn/problems/jump-game/

思路分析

关键是判断能否到达终点,不用管每一步跳跃到哪里,而是尽可能的跳跃到最远的位置

看最多能覆盖到哪里,只要不断更新能覆盖的距离,最后能覆盖到末尾就行了

具体执行:

  1. 定义一个cover表示能最远达到的方位,i每次移动只能在其 cover 范围内移动
  2. 每移动一次,根据该元素值重新更新cover,cover = max(该元素补充后范围,cover本身范围)
  3. 如果cover大于等于终点下标,返回ture

代码实现

python 复制代码
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        cover = 0
        n = len(nums)
        for i in range(n):
            # 判断是能能够到达 i 的位置
            if cover < i:
                return False
            cover = max(i + nums[i], cover)
            if cover >= n - 1:
                return True
        return False

2. 最短跳跃游戏

LeetCode 45
https://leetcode.cn/problems/jump-game-ii/

思路分析

贪心+双指针

设置四个变量

  • left 一步步遍历数组
  • steps 记录到达当前位置的最少步数
  • right 表示当前步数能够覆盖到的最大范围
  • left到达right时,更新right,step+1



代码实现

python 复制代码
class Solution:
    def jump(self, nums: List[int]) -> int:
        n = len(nums)
        steps = 0
        max_position = 0
        right = 0

        for left in range(n-1):
            max_position = max(max_position, nums[left] + left)
            if left == right:
                right = max_position
                steps += 1

        return steps
        
相关推荐
田里的水稻1 分钟前
FA_规划和控制(PC)-规律路图法(PRM)
人工智能·算法·机器学习·机器人·自动驾驶
追随者永远是胜利者11 分钟前
(LeetCode-Hot100)23. 合并 K 个升序链表
java·算法·leetcode·链表·go
ab15151715 分钟前
2.16完成107、108、111
算法
小O的算法实验室28 分钟前
2026年IEEE IOTJ SCI2区TOP,面向关键节点感知的灾害区域无人机集群路径规划,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
闻缺陷则喜何志丹34 分钟前
【构造】P9215 [入门赛 #11] [yLOI2021] 扶苏与 1 (Hard Version)|普及+
c++·算法·洛谷·构造
~央千澈~39 分钟前
抖音弹幕游戏开发之第14集:添加更多整蛊效果·优雅草云桧·卓伊凡
开发语言·python·游戏
Neil今天也要学习43 分钟前
永磁同步电机控制算法--基于数据驱动的超局部无模型预测电流控制MFPC及改进
单片机·嵌入式硬件·算法
开开心心_Every1 小时前
局域网大文件传输,设密码双向共享易用工具
运维·服务器·网络·游戏·pdf·电脑·excel
blackicexs2 小时前
第五周第二天
算法
不吃粑粑-2 小时前
FHQ Treap模版
数据结构·算法