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;
    }
}
相关推荐
程序员东岸3 小时前
从零开始学二叉树(上):树的初识 —— 从文件系统到树的基本概念
数据结构·经验分享·笔记·学习·算法
东华万里3 小时前
第十篇 扫雷游戏 下(末版·精简)
游戏
甄心爱学习4 小时前
数据挖掘11-分类的高级方法
人工智能·算法·分类·数据挖掘
2501_940094024 小时前
XBOX模拟器 Xemu模拟器最新版 附BIOS、MCPX 和 HDD 镜像文件和Xbox中文游戏全集
游戏·xbox
雪下的新火4 小时前
Blender:法线图&黑白图
游戏·unity·游戏引擎·blender·笔记分享
爪哇部落算法小助手4 小时前
每日两题day44
算法
不穿格子的程序员5 小时前
从零开始写算法——二分-搜索二维矩阵
线性代数·算法·leetcode·矩阵·二分查找
Kuo-Teng6 小时前
LeetCode 19: Remove Nth Node From End of List
java·数据结构·算法·leetcode·链表·职场和发展·list
Kuo-Teng6 小时前
LeetCode 21: Merge Two Sorted Lists
java·算法·leetcode·链表·职场和发展
2301_800399726 小时前
stm32 printf重定向到USART
java·stm32·算法