【力扣hot100题】(078)跳跃游戏Ⅱ

好难啊,我愿称之为跳崖游戏。

依旧用了两种方法,一种是我一开始想到的,一种是看答案学会的。

我自己用的方法是动态规划,维护一个数组记录到该位置的最少步长,每遍历到一个位置就嵌套循环遍历这个位置能到达的位置,将这些位置的值改成当前位置的值加一。

cpp 复制代码
class Solution {
public:
    int jump(vector<int>& nums) {
        int result=0;
        int step[10000];
        memset(step,0,sizeof(step));
        for(int i=0;i<nums.size();i++){
            for(int j=1;j<=nums[i]&&i+j<nums.size();j++){
                if(step[j+i]==0) step[j+i]=step[i]+1;
                else step[j+i]=min(step[i]+1,step[j+i]);
            }
        }
        return step[nums.size()-1];
    }
};

这里不用memset会出事,可能是因为调试运行和提交的代码不同,不加memset的话运行不会出错但提交会出错。

然后我就看了答案,这么说,真的很难想到,贪心题真的很考验思维。

我参照答案的方法(不知道和答案是否完全一样)是,维护两个值,一个是当前可以到达的步数,一个是当前步数加一可以到达的步数。思路是能使用当前步数到达就用当前步数到达,不能的话再,将当前可到达的步数改成当前步数加一可以到达的步数,然后将当前步数加一。并且每次遍历都要查看能不能更新当前步数加一可达的位置。

cpp 复制代码
class Solution {
public:
    int jump(vector<int>& nums) {
        int result=0;
        int far1=0;
        int far2=nums[0];
        for(int i=1;i<nums.size();i++){
            if(i>far1){
                result++;
                far1=far2;
            }
            far2=max(far2,nums[i]+i);
        }
        return result;
    }
};
相关推荐
心疼你的一切8 小时前
使用Unity引擎开发Rokid主机应用的模型交互操作
游戏·ui·unity·c#·游戏引擎·交互
dengzhenyue13 小时前
游戏项目 多态练习 超级玛丽demo8
游戏
心疼你的一切13 小时前
使用Unity引擎开发Rokid主机应用的全面配置交互操作
学习·游戏·unity·c#·游戏引擎·交互
2501_929157681 天前
NEOGEOCD模拟器+全游戏ISO+工具+特典美术+文档
游戏
da_vinci_x1 天前
2D角色动画进阶:Spine网格变形与序列帧特效的混合工作流
游戏·设计模式·设计师·photoshop·spine·游戏策划·游戏美术
大Mod_abfun3 天前
Unity游戏基础-2(初识场景~项目构建)
游戏·unity·游戏引擎
utmhikari3 天前
【测试人生】LLM赋能游戏自动化测试的一些想法
自动化测试·游戏·ai·大模型·llm·游戏测试
gopyer3 天前
180课时吃透Go语言游戏后端开发7:Go语言中的函数
开发语言·游戏·golang·go·函数
taulee014 天前
在云服务器搭建部署私人饥荒联机版游戏服务器 [2025.10.3][ubuntu 24.04][腾讯云2核2G服务器]
服务器·ubuntu·游戏
HELLOMILI4 天前
[UnrealEngine] 虚幻引擎UE5地形入门指南 | UE5地形教程(UE5 Terrain)
游戏·ue5·游戏引擎·虚幻·虚幻引擎·unreal engine