跳跃游戏(贪心算法)详解 | 时间O(n)空间O(1)最优解​

在算法题中,跳跃游戏是经典的贪心算法应用场景,其核心需求是判断能否从数组第一个位置跳到最后一个位置,同时追求最优的时间和空间复杂度。本文将详细拆解贪心算法求解跳跃游戏的思路、逻辑细节、示例验证及复杂度分析,全程无代码,聚焦算法思想本身,适合新手理解和梳理笔记。​

一、问题描述​

给定一个非负整数数组 nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。​

示例 1:

输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

二、贪心算法核心思路​

贪心算法的核心思想是「每一步都追求最优局部解,最终得到全局最优解」。对于跳跃游戏,我们的局部最优目标是:每遍历一个位置,就尽可能扩大当前能到达的最远范围,通过维护这个最远范围,判断是否能覆盖到数组末尾。​

1. 核心变量定义​

定义变量 mx,用于维护「当前所有可达位置中,能跳到的最远下标」。​

初始值:mx = 0。因为初始时我们只能位于数组第一个下标(下标 0),此时最远能到达的位置就是自身,无任何跳跃动作。​

2. 遍历逻辑拆解​

从左到右逐个遍历数组的每个位置 i,遍历过程中执行两个关键操作:​

判断当前位置是否可达:若 mx < i,说明即便用尽之前所有位置的跳跃能力,也无法到达当前位置 i,后续位置更无法触及,直接判定为「无法到达终点」,返回 false。​

更新最远可达范围:若当前位置 i 可达(即 mx >= i),则站在位置 i 上,能跳跃的最远距离为 i + nums[i](nums[i] 是位置 i 允许的最大跳跃步数)。将这个距离与当前的 mx 取最大值,更新 mx(即 mx = max(mx, i + nums[i])),实现「不断刷新最远可达边界」的目标。​

3. 遍历结束判定​

若能顺利遍历完整个数组(未在中途返回 false),说明所有位置都在可达范围内,且最终的 mx 必然覆盖数组的最后一个下标(否则遍历到最后一个位置时会触发 mx < i),因此直接返回 true。​

三、示例推演

通过两个示例,一步步推演算法执行过程,直观感受逻辑流转。​

示例 1:nums = [2,3,1,1,4](可到达终点)​

初始状态:mx = 0,准备遍历 i=0。​

遍历i=0:mx=0 >= 0(可达),计算0+2=2,更新 mx = max(0,2) = 2。​

遍历 i=1:mx=2 >= 1(可达),计算 1+3=4,更新 mx = max(2,4) = 4(此时已覆盖最后一个下标 4)。​

遍历 i=2:mx=4 >= 2(可达),计算 2+1=3,3 < 4,mx 保持 4。​

遍历 i=3:mx=4 >= 3(可达),计算 3+1=4,mx保持 4。​

遍历 i=4:mx=4 >= 4(可达),计算 4+4=8,更新mx=8。​

遍历结束,返回 true。​

示例 2:nums = [3,2,1,0,4](无法到达终点)​

初始状态:mx = 0,准备遍历 i=0。​

遍历 i=0:mx=0 >= 0(可达),计算 0+3=3,更新 mx=3。​

遍历 i=1:mx=3 >= 1(可达),计算 1+2=3,mx 保持 3。​

遍历 i=2:mx=3 >= 2(可达),计算 2+1=3,mx 保持 3。​

遍历 i=3:mx=3 >= 3(可达),计算 3+0=3,mx 保持 3。​

遍历i=4:mx=3 < 4(不可达),直接返回 false。​

四、复杂度分析​

1. 时间复杂度:O(n)​

算法仅需从头到尾遍历一次数组,每个元素只被处理一次,遍历次数与数组长度 n 成正比,因此时间复杂度为线性阶 O(n),是该问题的最优时间复杂度。​

2. 空间复杂度:O(1)​

仅使用了 mx、i 两个常数级变量,未开辟任何与数组规模相关的额外空间(如数组、哈希表等),因此空间复杂度为常数阶 O(1),实现了空间最优。​

五、算法核心总结​

贪心策略体现:不纠结于「每一步跳多少步」,而是聚焦「每一步能到达的最远范围」,通过局部最优的范围扩张,实现全局是否可达的判断。​

关键逻辑:mx 是算法的核心,始终维护当前可达的最远边界,遍历中仅需验证位置可达性并更新边界,逻辑简洁高效。​

优势:相较于动态规划(时间 O(n²)、空间 O(n)),贪心算法在时间和空间上均有显著优化,是跳跃游戏问题的最优解法。​

以上就是跳跃游戏贪心算法的完整解析,核心在于理解「最远可达边界」的维护逻辑。如果有疑问或其他延伸场景,欢迎在评论区交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

班通科技:如何运用Bamtone HCT80执行IPC-2152的耐电流测试?

印制电路板&#xff08;PCB&#xff09;的载流能力是决定产品可靠性和安全性的关键因素&#xff0c;其中《印制板设计中载流能力确定标准》IPC-2152为PCB导体尺寸与温升的关系提供了权威指导。标准强调&#xff0c;对于绝对精度&#xff0c;必须进行原型测试。作为国内领先的PC…

contextvars 原理详解

contextvars 原理详解 一、核心概念 1.1 什么是 contextvars&#xff1f; contextvars 是 Python 3.7 引入的上下文变量模块&#xff0c;用于在异步调用链中传递上下文。 核心特点&#xff1a; 存储在进程内存中支持协程级别的隔离&#xff08;不同协程互不干扰&#xff0…

AI安全面临灵魂拷问:“意图篡改”怎么防?绿盟科技给你答案!

随着AI Agent规模化落地被按下“加速键”&#xff0c;其安全是否值得信任&#xff1f;意图篡改、调用链投毒、供应链漏洞、合规备案压力等问题&#xff0c;正成为企业AI落地路上的“绊脚石”。 应势而生&#xff0c;绿盟科技召开以“清风拂境 智御全域”为主题的大模型安全创新…

Power BI 在大数据可视化报表中的应用实践

Power BI 在大数据可视化报表中的应用实践 关键词&#xff1a;Power BI、大数据可视化、数据报表、DAX、数据清洗、交互分析、商业智能 摘要&#xff1a;本文以“从数据到故事”为主线&#xff0c;结合生活场景与企业实战案例&#xff0c;详细讲解Power BI在大数据可视化报表中…

十年携手 共创共赢 东软荣膺一汽红旗“新高尚·旗帜奖”

1月21日&#xff0c;中国一汽2026红旗供应链伙伴大会在长春举行。大会以“旗心聚力 智链未来”为主题&#xff0c;为2025年度对红旗品牌创新发展贡献突出的供应商颁发奖项。作为一汽红旗长期的核心战略合作伙伴&#xff0c;东软凭借领先的技术实力、稳定的交付能力与卓越的协同…

江苏大学《Prog. Solid State Ch.》综述:超快焦耳加热技术—电池材料非平衡合成与结构精准调控的新范式

导语 随着全球能源结构向可再生能源转型&#xff0c;高效电能存储系统成为关键支撑。然而&#xff0c;以锂离子电池为代表的各种电池体系&#xff0c;其性能的进一步提升正面临电极材料本征物化性质及传统合成工艺的双重制约。开发能够实现材料快速制备、微观结构精准设计且符合…

十分钟读懂RAG - 智慧园区

大语言模型虽强,却面临幻觉、知识截止和上下文限制三大痛点。RAG技术应运而生,让AI能够带书考试,通过分片、索引、召回和生成四步精准解决问题。本文将深入解析RAG的工作原理、应用场景与局限,助你掌握这套AI工程体…

[GenAI] Launch Multiple Cursor Composer AI Agents to Work in Parallel

AI coding assistants (like Cursors Composer) are powerful, but running a single instance can become a bottleneck, especially for larger tasks or when experimenting with different approaches. This lesso…

多核异构MPU在多轴实时运动控制中的系统架构与实现解析

随着制程与架构的演进,多核处理器早已不再局限于消费级SoC。当前嵌入式MPU同样呈现出多核化、异构化、实时与非实时并存的发展趋势。在工业自动化、机器人、伺服驱动等场景中,既需要Linux生态与复杂通信协议,又必须满足亚毫秒级实时控制要求,单一类型CPU已难以兼顾。 多核…

从零构建嵌入式轻量级命令行调试工具

在理想状态下,嵌入式开发依赖 JTAG/SWD 调试器完成断点、变量查看和单步执行。但在真实工程环境中,这种“理想状态”往往并不存在: 现场环境不可调试:设备已封装、上电运行,调试口无法再连接 系统必须在线运行:不能因调试而重启、重新烧录 远程部署不可控:设备在机房、野…

【前端开发】Vue项目多客户配置自动化方案【二】

背景在开发面向多学校的Vue项目时&#xff0c;每个学校都需要独立的配置&#xff08;名称、Logo、背景图、API地址等&#xff09;。传统的多环境配置方案会产生大量脚本命令&#xff0c;维护成本较高。为此&#xff0c;设计了一套更简洁的单一入口方案&#xff0c;通过交互式选…

WD5030K实测解析:一款撑起宽压大电流场景的国产DC-DC芯片,7-30V宽压输入、12A

在硬件设计领域&#xff0c;宽压大电流DC-DC芯片的选型始终是个难题。既要应对复杂工况下的电压波动&#xff0c;又要平衡效率、体积与成本&#xff0c;还要规避供应链断货风险——尤其是便携式储能、工业分布式电源这类场景&#xff0c;电源芯片的性能直接决定项目成败。近期在…

【高斯泼溅】还在龟速建模?三步实现训练极速优化

“照片变模型”的魔法&#xff0c;3DGS已经做得足够惊艳——随便拿手机绕物体拍一圈&#xff0c;一段时间后就能拖着一个720任意看的逼真模型旋转。 但&#xff01;魔法背后有个小尴尬&#xff1a;训练时间。别人刷两集短剧&#xff0c;它还在GPU里“吭哧吭哧”地增加点&#x…

技术前沿!提示工程架构师提升AI提示质量的创新思路

技术前沿&#xff01;提示工程架构师提升AI提示质量的6大创新思路——从「Prompt工匠」到「AI协作设计师」的蜕变 一、引言&#xff1a;你还是“Prompt调参侠”吗&#xff1f; 凌晨2点&#xff0c;你盯着电脑屏幕上的AI输出&#xff0c;第17次修改Prompt—— “帮我写一篇面向…

通过采集器监测环境的温湿度如果这个采集器连上网络接入云平台会发生什么呢?

​ 温湿度的精准监控对于保障样本质量和安全具有至关重要的作用。传统的温湿度采集器虽然能够记录环境数据&#xff0c;但往往受限于数据传输和实时监控的能力&#xff0c;难以满足快速响应和远程管理的需求。随着物联网技术的发展&#xff0c;将温湿度采集器连接到网络并…

物联网模组柔性FPC天线方案选型与应用指南解析

柔性FPC&#xff08;Flexible Printed Circuit&#xff09;天线模块凭借其轻薄、柔性、可弯折等特性&#xff0c;广泛应用于智能手机、可穿戴设备、汽车电子、物联网设备等领域&#xff0c;成为现代高性能无线通信设备的关键组件之一。本文将围绕柔性FPC天线模块的选型指南与应…

Zookeeper集群部署实战:高可用配置与性能调优

Zookeeper集群部署实战&#xff1a;高可用配置与性能调优 关键词&#xff1a;Zookeeper集群、高可用、ZAB协议、性能调优、分布式协调 摘要&#xff1a;本文以“Zookeeper集群部署”为核心&#xff0c;从基础概念到实战操作&#xff0c;逐步解析如何搭建高可用Zookeeper集群&am…

【预编码】基于matlab BDMA下行传输的集群块对角数字预编码【含Matlab源码 15008期】含报告

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【通信】基于matlab遗传算法多用户MISO系统速率分拆【含Matlab源码 15012期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

64通道+166μs采样!触觉智能RK3506+OneOS低成本实时ADC采集

本文基于触觉智能RK3506核心板/开发板&#xff0c;介绍RK3506OneOS低成本实时ADC采集方案。可以通过触觉智能各大视频平台了解实测数据&#xff1a; https://www.bilibili.com/video/BV1ZjCJBsEwF/?spm_id_from333.1387 电网ADC采集 随着智能电网建设的加速推进&#xff0c…