跳跃游戏 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];
    }
};

动态规划:

dp[i]:表示到达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];
    }
};

贪心:

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

相关推荐
Livia_LW7 小时前
云电竞巅峰对决:ToDesk/网易云/START实战测评 谁是真王者?
算法·游戏
muyouking1111 小时前
Unreal Engine中FRotator与FQuat在赛车游戏方向盘控制中的协同应用解析
算法·游戏·虚幻
子燕若水15 小时前
在 UE5 编辑器中,由于游戏设置 -> EV100 设置,点击播放前后的光照不同。如何保持点击播放前后的光照一致?
游戏·ue5·编辑器
m0_5522008216 小时前
《UE5_C++多人TPS完整教程》学习笔记36 ——《P37 拾取组件(Pickup Widget)》
c++·游戏·ue5
上海云盾商务经理杨杨1 天前
游戏APP如何抵御DDoS攻击与黑客勒索?实战防护全攻略
游戏·ddos
benben0441 天前
Unity3D仿星露谷物语开发35之锄地动画
前端·游戏·游戏引擎
程序员茶馆1 天前
【unity】Vulkan模式下部分Android机型使用VideoPlayer组件播放视频异常问题
游戏·unity·游戏引擎·图形渲染·unity3d·游戏开发
Delphi菜鸟2 天前
go+mysql+cocos实现游戏搭建
mysql·游戏·golang·gin·cocos2d
benben0442 天前
Unity3D仿星露谷物语开发36之锄地动画2
游戏·ui·unity·游戏引擎
程序员爱钓鱼2 天前
用 Go 写一个可以双人对弈的中国象棋游戏!附完整源码
游戏·go·游戏开发