LeetCode刷题记录(第三天)55. 跳跃游戏

题目: 55. 跳跃游戏

标签:贪心 数组 动态规划

题目信息:

思路一:动态规划

  1. 确定dp数组含义: dpi 第i个位置能否达到
  2. 确定递推公式: dpi 能不能达到,取决于前面di-j,di-j要达到,同时numj要大于i-j
    即 if(dpi-j==true&&numj>i-j){ dpi = true; }
  3. 初始化dp数组
  4. 遍历填充dp数组
  5. 检验结果

代码实现:

cpp 复制代码
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int n=nums.size();
        vector<bool>dp(n,false);
        dp[0] = true;
        for(int i=0;i<n;i++){
            for(int j=n-1;j>=i;j--){
                if(dp[i]==true&&nums[i]>=j-i){
                    dp[j] = true;
                }
            }
        }
        return dp[n-1];
    }
};

时间复杂度分析:

O(n^2)

但是这道题提交后会超出时间限制

思路二:

简单思路,用k记录当前的最大跳数,k=max(k,i+numsi),看k能不能超过i+1,如果大于i+1,则可以到达那个地方。

代码实现:

cpp 复制代码
class Solution {
public:
    // dp超时
    bool canJump(vector<int>& nums) {
        int n=nums.size();
        int k=0;//这个就是当前最大的跳数
        for(int i=0;i<n;i++){
            if(i>k)return false;//i比最大跳数都大了,跳不了一点
            k = max(k,i+nums[i]);
        }
        return true;
    }
};

时间复杂度分析:

O(n)

总结:

太多了太多了,还有8道题目的题解来没来得及写QAQ

相关推荐
其实防守也摸鱼4 分钟前
Codex 下载与本地部署实战指南
linux·服务器·前端·数据库·算法·ai
南极企鹅5 分钟前
生产环境gc文件分析
java·jvm·算法
希洛兔7 分钟前
原码、反码、补码:一张图讲透计算机里的负数表示
算法·面试
X北辰北11 分钟前
C++ 进阶第二阶段总结|STL容器全家桶、迭代器失效、STL算法、序列化入门(工程必备)
开发语言·c++·算法
溪语流沙15 分钟前
面试加分项!Manacher:O(n)求最长回文子串的对称之美
java·python·leetcode·面试·职场和发展
RoboWizard17 分钟前
固态硬盘的读写速度多少才够游戏用?
游戏
过河卒_zh156676619 分钟前
再更新!人工智能安全治理指引性文件第三版发布!
人工智能·算法·aigc·生成式人工智能·算法备案
Web3&Basketball40 分钟前
昇腾950DT迁移实测:3笔成本账与决策树
服务器·算法·决策树
康实训1 小时前
老年人能力评估实训室核心实训环节解析
人工智能·算法·实训室·实训室建设
强哥聊算力6 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力