新闻详情

新闻详情

首页 / 资讯中心 / 详情

【贪心-1】55.跳跃游戏

发布时间:2026/10/2 18:11:22来源:尧图网络
【贪心-1】55.跳跃游戏
题目描述给你一个非负整数数组nums你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标如果可以返回true否则返回false。示例 1输入nums [2,3,1,1,4]输出true解释可以先跳 1 步从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2输入nums [3,2,1,0,4]输出false解释无论怎样总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 所以永远不可能到达最后一个下标。解题思路方法一贪心维护最远可达位置核心思路遍历每个位置维护当前能到达的最远下标。如果最远下标 ≥ 最后一个下标返回 true。算法维护maxReach当前能到达的最远下标遍历数组对于每个位置i如果i maxReach说明当前位置不可达返回false更新maxReach max(maxReach, i nums[i])如果maxReach n - 1返回true遍历结束返回true具体过程示例nums [2, 3, 1, 1, 4]inums[i]i nums[i]maxReach说明0222从0最远到21344从1最远到42134maxReach不变3144maxReach不变4488已到达末尾maxReach 4 4返回true✅nums [3, 2, 1, 0, 4]inums[i]i nums[i]maxReach说明0333从0最远到31233maxReach不变2133maxReach不变3033maxReach不变4---i4 maxReach3返回 false返回false✅代码实现class Solution { public: bool canJump(vectorint nums) { int maxReach 0; int n nums.size(); for (int i 0; i n; i) { // 当前位置不可达 if (i maxReach) return false; // 更新最远可达位置 maxReach max(maxReach, i nums[i]); // 已经可以到达末尾 if (maxReach n - 1) return true; } return true; } };更简洁的写法class Solution { public: bool canJump(vectorint nums) { int maxReach 0; for (int i 0; i nums.size(); i) { if (i maxReach) return false; maxReach max(maxReach, i nums[i]); } return true; } };复杂度分析维度复杂度说明时间复杂度O(n)一次遍历空间复杂度O(1)只用了一个变量关键细节1. 为什么i maxReach就返回 falsemaxReach是当前能到达的最远下标。如果i maxReach说明从起点到i之间有断档无法到达i更不可能到达末尾。2. 为什么maxReach n - 1就返回 truen - 1是最后一个下标。如果maxReach已经 ≥n - 1说明可以到达末尾直接返回true。3. 为什么不用maxReach max(maxReach, i nums[i])后判断因为可能在中途就已经能到达末尾提前返回可以省去后续遍历。4. 和「跳跃游戏 II」的区别题目区别55. 跳跃游戏判断能否到达末尾45. 跳跃游戏 II求最少跳跃次数45 题需要额外维护当前步数能到达的最远位置和下一步能到达的最远位置。方法二从后往前贪心O(n)代码实现class Solution { public: bool canJump(vectorint nums) { int lastPos nums.size() - 1; for (int i nums.size() - 2; i 0; i--) { if (i nums[i] lastPos) { lastPos i; } } return lastPos 0; } };思路从后往前看如果某个位置能到达lastPos就把lastPos更新为它。最终看lastPos是否回到 0。复杂度时间 O(n)空间 O(1)两种方法对比方法时间复杂度空间复杂度推荐度贪心维护最远O(n)O(1)⭐⭐⭐⭐⭐从后往前贪心O(n)O(1)⭐⭐⭐⭐总结要点说明核心思想维护最远可达位置判断能否到达末尾关键判断i maxReach→ 不可达返回 false时间复杂度O(n)空间复杂度O(1)
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

别再只谈大模型了!企业AI真功夫在这里:LLM + RAG+AI Agent+A2A+MCP组合拳解析|TaoToken统一Key通道实战 2026/10/2 19:04:38

别再只谈大模型了!企业AI真功夫在这里:LLM + RAG+AI Agent+A2A+MCP组合拳解析|TaoToken统一Key通道实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
超级电容驱动虚拟同步发电机并网系统:惯量支撑与波形优化 2026/10/2 19:04:31

超级电容驱动虚拟同步发电机并网系统:惯量支撑与波形优化

做分布式并网研究的人,大概率都遇到过这个问题:一台光伏逆变器,明明有功功率控制得很好,但电网频率稍微抖一下,它就像个“局外人”——既不提供惯性支撑,也不参与频率阻尼。原因很简单,传统逆变…

阅读更多 →
CFX监测点与监测曲线设置指南:CFD收敛判断的实用方法 2026/10/2 19:04:19

CFX监测点与监测曲线设置指南:CFD收敛判断的实用方法

做CFD的人大概都有过这种经历:网格画好了、边界条件也给了,计算一跑起来,眼睛就只能盯住那个残差曲线,心里七上八下的,完全不知道结果到底靠不靠谱。其实残差曲线只能告诉你“方程有没有解下去”,没办法直接…

阅读更多 →
风光氢多主体合作博弈与分布式求解:基于纳什谈判的联合运营优化 2026/10/2 19:04:19

风光氢多主体合作博弈与分布式求解:基于纳什谈判的联合运营优化

风光氢联合运营这些年提得很多,但真正动手做项目时,最头疼的往往不是风、光、氢各自的建模精度,而是这几个产权主体之间“怎么分钱、怎么协调”的问题。风电场、光伏电站、制氢厂如果分属不同投资方,各自有各自的成本曲线和收益诉…

阅读更多 →
大模型API网关配额防透支:Redis+Lua原子预扣实战 2026/10/2 19:04:19

大模型API网关配额防透支:Redis+Lua原子预扣实战

1. 从一次线上事故说起:为什么配额预扣必须做成原子操作去年冬天的一个凌晨,我被值班电话叫醒——某个大模型 API 网关的账单在三个小时内暴涨了四十倍。排查下来原因并不复杂:一个租户的客户端因为网络抖动疯狂重试,而我们的配额…

阅读更多 →
browser-use实战:让AI Agent真正操控浏览器完成自动化任务 2026/10/2 19:04:19

browser-use实战:让AI Agent真正操控浏览器完成自动化任务

这段时间AI Agent的话题特别热,但很多朋友问我:Agent到底能帮我们干什么?说实话,早期接触Agent的时候,我也觉得它有点“纸上谈兵”——能写代码、能回答问题,但真要让它去完成一个实际操作,比如…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉