55. 跳跃游戏

解法1

模拟

动态规划

java 复制代码
class Solution {
    public boolean canJump(int[] nums) {
        int n = nums.length;
        boolean[] reachArr = new boolean[n];
        reachArr[n - 1] = true;
        for (int i = n - 2; i > -1; i--) {
            int right = Math.min(nums[i] + i + 1, n);
            for (int j = i + 1; j < right; j++) {
                if (reachArr[j]) {
                    reachArr[i] = true;
                    break;
                }
            }
        }
        return reachArr[0];
    }
}

解法2

累计可达距离大于等于n-1,则可以达到。

遍历每个元素,计算在当前位置基础上,最大可达右边界。

维持一个最大可以到达的右边界。

java 复制代码
class Solution {
    public boolean canJump(int[] nums) {
        int n = nums.length;
        int rightmost = 0;
        for (int i = 0; i < nums.length; i++) {
            // 当前位置可达
            if (i <= rightmost) {
                // 尝试更新右边界
                rightmost = Math.max(rightmost, i + nums[i]);
                if (rightmost >= n - 1) {
                    return true;
                }
            }
        }
        return false;
    }
}
相关推荐
生信大表哥13 小时前
Python单细胞分析-基于leiden算法的降维聚类
linux·python·算法·生信·数信院生信服务器·生信云服务器
玫瑰花店14 小时前
万字C++中锁机制和内存序详解
开发语言·c++·算法
Elias不吃糖15 小时前
LeetCode每日一练(209, 167)
数据结构·c++·算法·leetcode
铁手飞鹰16 小时前
单链表(C语言,手撕)
数据结构·c++·算法·c·单链表
悦悦子a啊16 小时前
项目案例作业(选做):使用文件改造已有信息系统
java·开发语言·算法
小殊小殊16 小时前
【论文笔记】知识蒸馏的全面综述
人工智能·算法·机器学习
无限进步_16 小时前
C语言动态内存管理:掌握malloc、calloc、realloc和free的实战应用
c语言·开发语言·c++·git·算法·github·visual studio
im_AMBER16 小时前
AI井字棋项目开发笔记
前端·笔记·学习·算法
Wadli16 小时前
项目2 |内存池1|基于哈希桶的多种定长内存池
算法
Dr.勿忘16 小时前
开源Unity小框架:高效单例与模块化设计
游戏·unity·开源·c#·游戏引擎·游戏程序·gamejam