贪心算法-跳跃游戏

hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧!

javascript 复制代码
/**
 * 使用贪心算法判断是否能到达数组的最后一个下标
 * @param {number[]} nums - 输入的非负整数数组
 * @return {boolean} - 若能到达最后一个下标返回 true,否则返回 false
 */
function canJump(nums) {
    // 初始化最大可到达的位置为 0
    let maxReach = 0;
    // 遍历数组中的每个元素
    for (let i = 0; i < nums.length; i++) {
        // 如果当前位置超过了最大可到达的位置,说明无法到达该位置,返回 false
        if (i > maxReach) {
            return false;
        }
        // 更新最大可到达的位置,取当前最大可到达位置和当前位置能跳到的最远位置的较大值
        maxReach = Math.max(maxReach, i + nums[i]);
        // 如果最大可到达位置已经能到达或超过最后一个下标,返回 true
        if (maxReach >= nums.length - 1) {
            return true;
        }
    }
    // 遍历完数组都未到达最后一个下标,返回 false
    return false;
}

代码解释

初始化: 定义 maxReach 变量,用于记录当前能到达的最大位置,初始值为 0。
遍历数组:

对于数组中的每个位置 i,首先检查 i 是否大于 maxReach,如果是,说明无法到达该位置,直接返回 false。

接着更新 maxReach,通过比较当前 maxReach 和 i + numsi 的大小,取较大值作为新的 maxReach,i + numsi 表示从当前位置 i 能跳到的最远位置。

然后检查 maxReach 是否已经能到达或超过数组的最后一个下标,如果是,返回 true。
返回结果: 如果遍历完整个数组都没有满足能到达最后一个下标的条件,返回 false。

相关推荐
独立开发之道4 分钟前
【three.js教程】Three.js 运行时更新:矩阵、几何体、材质怎么改才不卡
javascript·矩阵·材质
船厂电气自动化ai大模型12 分钟前
AI大模型与数学/第63课:矩阵定义、矩阵加法、标量乘法(逐级精讲)
数据结构·人工智能·深度学习·线性代数·算法
不可能片场20 分钟前
resources/app 为何能覆盖 app.asar
前端·electron
小婉21 分钟前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js
余额瞒着我当琳25 分钟前
算法修炼 chapter 2 双指针进阶、盛最多水的容器、有效三角形的个数、两数之和、三数之和、四数之和
算法
你压到我腿毛了66627 分钟前
C语言冒泡算法(Bubble sort)
c语言·数据结构·算法
skiyee32 分钟前
🚀 用 17 行代码给 UniApp 加上全局登录拦截
前端·uni-app
默_笙1 小时前
🌃 HTTP 不认识你:JWT 登录鉴权的完整"酒店入住"指南
前端·javascript
靠沿1 小时前
贪心算法专题(三)
算法·贪心算法
Profile排查笔记1 小时前
JavaScript 实现浏览器指纹生成:基础字段、Canvas 采样与 SHA-256 摘要
前端·人工智能·后端·自动化