面试经典150题——跳跃游戏

面试经典150题 day9

      • 题目来源
      • 我的题解
        • [方法一 动态规划+双重循环](#方法一 动态规划+双重循环)
        • [方法二 贪心](#方法二 贪心)

题目来源

力扣每日一题;题序:55

我的题解

方法一 动态规划+双重循环

使用一个dp表记录i位置是否可达,然后在判断是否可达时需要看前面的numsj+j>=i&&dpj
时间复杂度 :O( n 2 n^2 n2)
空间复杂度:O(n)

java 复制代码
public boolean canJump(int[] nums) {
    int n=nums.length;
    boolean[] dp=new boolean[n];
    dp[0]=true;
    for(int i=1;i<n;i++){
        for(int j=0;j<i;j++){
            if(nums[j]+j>=i&&dp[j])
                dp[i]=true;
        }
    }
    return dp[n-1];
}
方法二 贪心

记录当前能够达到的最大位置,若能达到的最大位置小于当前位置,则返回false;若能达到的最大位置大于等于n-1,则返回true,其他情况返回false。
时间复杂度:O(n)

空间复杂度:O(1)

java 复制代码
public boolean canJump(int[] nums) {
    int n=nums.length;
    int maxIndex=0;
    for(int i=0;i<n;i++){
        if(maxIndex<i)
            return false;
        maxIndex=Math.max(maxIndex,nums[i]+i);
        if(maxIndex>=n-1)
            return true;
    }
    return false;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐
ShineWinsu4 小时前
对于C++:IO流状态的详细解析
c++·面试·io·cin·io流状态·goodbit·failbit
M-Robots echo4 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
「PlanA」4 小时前
测试开发面经001
面试
不可求~5 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现
java·前端·数据库
数模竞赛Paid answer5 小时前
2026年中青杯数学建模A题数学建模论文智能评估系统与多智能体优化方法求解全过程论文及程序
算法·数学建模·中青杯
银-豆豆5 小时前
数据结构与算法-动态规划、回溯与贪心
算法·动态规划
JL155 小时前
面试项目被问到自闭-如何把课设包装成亮眼项目
面试·职场和发展
mldong6 小时前
用 DDD 设计工作流引擎:聚合根与充血模型
java·架构
mqiqe7 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
伍一517 小时前
03-文件管理模块-一个看似简单的模块藏着多少细节
java·ruoyi·若依