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;
    }
}
相关推荐
10岁的博客9 分钟前
代码编程:一场思维与创造力的革命
开发语言·算法
Aczone2834 分钟前
嵌入式 数据结构学习 (六) 树、哈希表与内核链表
数据结构·学习·算法
定偶36 分钟前
进制转换小题
c语言·开发语言·数据结构·算法
体系结构论文研讨会1 小时前
多项式环及Rq的含义
算法
智驱力人工智能2 小时前
极端高温下的智慧出行:危险检测与救援
人工智能·算法·安全·行为识别·智能巡航·高温预警·高温监测
森焱森2 小时前
60 美元玩转 Li-Fi —— 开源 OpenVLC 平台入门(附 BeagleBone Black 驱动简单解析)
c语言·单片机·算法·架构·开源
科技每日热闻2 小时前
双模秒切,体验跃迁!飞利浦EVNIA双模游戏显示器27M2N6801M王者降临!
游戏·计算机外设
课堂剪切板3 小时前
ch07 题解
算法·深度优先
科大饭桶4 小时前
数据结构自学Day5--链表知识总结
数据结构·算法·leetcode·链表·c
我爱C编程6 小时前
基于Qlearning强化学习的1DoF机械臂运动控制系统matlab仿真
算法