力扣刷题Days25-45. 跳跃游戏 II(js)

目录

1,题目

2,代码

贪心算法+正向查找

3,学习

解题思路

具体代码处理

数组遍历的最后边界的处理:


1,题目

给定一个长度为 n0 索引 整数数组 nums。初始位置为 nums[0]

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

2,代码

贪心算法+正向查找

javascript 复制代码
/**
 * @param {number[]} nums
 * @return {number}
 */
var jump = function(nums) {
    let jumpsTemp = 0;
    let end = 0;
    let maxPosition = 0;

    let steps =  0;
    for(let i = 0;i<nums.length-1;i++){
        maxPosition = Math.max(maxPosition,i+nums[i]);
        if(i === end){
            end = maxPosition;
            steps++;
        }
    }
    return steps;
};
javascript 复制代码
 for(let i = 0;i<nums.length-1;i++){
        maxPosition = Math.max(maxPosition,i+nums[i]);
        if(i === end){
            end = maxPosition;
            steps++;
        }
    }
end和maxPosition变量的值 和数组下标值保持一致,便于数据的使用;

3,学习

解题思路

每次找到可以到达的最远位置,就可以实现线性时间内得到最少的跳跃次数。

具体代码处理

思路中 应该是在每次最远距离中选择下一跳最远的,才进行step++,这里做了转化。

维护当前能够到达的最大下标位置,记作边界。我们从左到右遍历数组,当到达边界的时候,更新边界并将跳跃次数增加。

相比于两层嵌套的循环,在时间上从O(n*n)变为O(n);

数组遍历的最后边界的处理:

我们不用访问最后一个元素,是因为在访问最后一个元素之前,我们的边界一定大于等于最后一个元素,否则无法调到最后一个位置。


勉励自己:贵在坚持!

相关推荐
东风破_5 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_5 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
蒲公英eric6 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_016 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余6 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei7 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神7 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
AI情绪识别开源7 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
小磊哥er8 小时前
深入解构Claude Code - 第 8 篇 · 数据放哪、钱怎么算
javascript·ai编程
罗西的思考8 小时前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习