跳跃游戏 II

跳跃游戏 II

思路:

想到用队列,一层一层往外扩。

相当于暴力了,还是过了,因为稍微剪了一点枝。

代码:

cpp 复制代码
class Solution {
public:
    int jump(vector<int>& nums) {
        int n=nums.size();
        queue<int> q;//<下标>
        unordered_map<int,int> m;//键值对:键:下标  值:最小次数
        q.push(0);
        m[0]=0;
        while(!q.empty())
        {
            auto t=q.front();
            q.pop();
            int zuiyuanjuli=t+nums[t];
            for (int i = t + 1; i <= zuiyuanjuli && i < n; i++) 
            {
                // 如果没有访问过或者找到了更少的跳跃次数
                if (m.find(i) == m.end() || m[t] + 1 < m[i]) 
                {
                    m[i] = m[t] + 1;
                    q.push(i); // 将新位置加入队列
                    // 如果已经到达终点
                    if (i == n - 1)
                     {
                        return m[i];
                    }
                }
            }
            
        }
        return m[n-1];
    }
};

动态规划:

dpi:表示到达i所需的最短次数。

cpp 复制代码
const int N = 1e4+10;
int dp[N];
class Solution {
public:
    int jump(vector<int>& nums) {
        memset(dp,0x3f,sizeof dp);
        dp[0]=0;
        for(int i=0;i<nums.size();i++)
        {
            int step=nums[i];
            for(int j=i+1;j<=i+step&&j<nums.size();j++)
            {
                dp[j]=min(dp[j],dp[i]+1);
            }
        }
        return dp[nums.size()-1];
    }
};

贪心:

觉得代码不咋好理解,好难啊。。。

相关推荐
aaaffaewrerewrwer16 小时前
一个更流畅、更纯粹的在线 2048 游戏(浏览器即开 / 无需下载)
游戏·2048
前端不太难18 小时前
鸿蒙游戏需要 GameEngine 吗?
游戏·状态模式·harmonyos
Kurisu57518 小时前
空洞骑士修改器下载2026最新
游戏·修改器代码
做cv的小昊19 小时前
计算机图形学:【Games101】学习笔记06——几何(曲线和曲面、网格处理)、阴影图
c++·笔记·学习·游戏·图形渲染·几何学·光照贴图
wgc2k19 小时前
Node.js游戏服务器项目移植 4-MongoDB的移植
mongodb·游戏·node.js
wgc2k19 小时前
Oops Framework-2-框架的原理(Cocos Creator + ECS)
游戏·cocos2d
Swift社区20 小时前
AI + 鸿蒙游戏:下一代交互革命
人工智能·游戏·harmonyos
yjcode7891 天前
探索游戏充值新纪元:友价源码技术革新之旅
大数据·人工智能·游戏·游戏交易
aaaffaewrerewrwer1 天前
一个真正可玩、可分享、可自定义的在线单词搜索游戏网站(Word Search Puzzles)
游戏·word
wjql22 天前
少女前线蓝蝶契约体力恢复时间 少女前线蓝蝶契约体力怎么恢复
游戏