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;
    }
}
相关推荐
Rabitebla3 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
库玛西3 小时前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法
木井巳3 小时前
【记忆化搜索】最长递增子序列
java·算法·leetcode·深度优先·剪枝·推荐算法
东方护航数据恢复(深圳)3 小时前
本地小算力设备数据恢复经典案例实操全解_东方护航数据恢复深圳店
大数据·服务器·算法·ai·gpu算力
Omics Pro3 小时前
上海AI Lab孙思琦×高张阳:虚拟细胞代码库智能体
数据库·人工智能·算法·机器学习·自然语言处理
Y幽谷客3 小时前
图像识别入门习题整理
算法
点纭4 小时前
C 语言 第七章 常用函数(3)
c语言·开发语言·算法·oracle·c#
β添砖java4 小时前
机器学习2 KNN算法、距离度量、特征预处理、超参数选择、手写数字、鸢尾花
人工智能·算法·机器学习
TAN-90°-4 小时前
Deep Learning for Computer Vision——Generative Models 2
人工智能·深度学习·神经网络·算法·目标检测·机器学习·计算机视觉
Rabitebla4 小时前
【Linux系统编程】指令(三):创建、删除、复制、移动、看内容
linux·数据结构·c++·算法