当前位置: 首页 > news >正文

力扣hot100:跳跃游戏

题目描述:

贪心算法思想:

贪心算法的核心是每一步都做出当前状态下的局部最优选择,最终期望得到全局最优解。对于本题,局部最优策略是:在遍历过程中,持续维护 “当前能到达的最大索引”,每到一个位置,就更新这个最大索引(取当前最大索引与 “当前位置 + 当前位置能跳的最大长度” 的较大值)。通过这种局部最优的更新,最终判断是否能覆盖到数组的最后一个索引。

思路解析:

要判断能否到达数组最后一个下标,关键在于跟踪 “能到达的最远位置”,具体思路如下:

  1. 初始化最大可达索引:从数组第一个元素开始,初始最大可达索引为0(起始位置)。
  2. 遍历数组的每个位置:
    • 若当前遍历的索引i超过了 “当前能到达的最大索引”,说明该位置无法到达,直接返回false
    • 否则,更新 “能到达的最大索引”(取当前最大索引与i + nums[i]的较大值,i + nums[i]是从当前位置i能跳到的最远位置)。
    • 若更新后的最大索引已经覆盖了数组的最后一个下标(即maxLength >= n-1),直接返回true(提前终止,提升效率)。
  3. 遍历结束:若顺利遍历完所有位置,说明最后一个下标可到达,返回true

代码:

class Solution { public boolean canJump(int[] nums) { int n = nums.length; // 获取数组长度 if (n == 0) { // 处理空数组的边界情况 return false; } int maxLength = 0; // 记录当前能到达的最大索引 for (int i = 0; i < n; i++) { // 遍历数组的每个位置 // 若当前索引超过了能到达的最大范围,说明无法到达后续位置,返回false if (i > maxLength) { return false; } // 更新能到达的最大索引:取当前最大索引 与 “当前位置+当前位置能跳的最大长度”的较大值 maxLength = Math.max(maxLength, i + nums[i]); // 若最大索引已覆盖最后一个下标,直接返回true(提前终止) if (maxLength >= n - 1) { return true; } } return true; // 遍历完成后,说明最后一个下标可到达 } }

代码解析:

  • 边界处理:if (n == 0)处理空数组场景,避免后续逻辑出错。
  • 遍历与合法性判断:if (i > maxLength)是核心判断 —— 若当前位置i不在 “能到达的范围” 内,说明无法继续前进,直接返回false
  • 贪心更新最大可达索引:maxLength = Math.max(maxLength, i + nums[i])是贪心策略的体现 —— 每一步都尽可能扩大 “能到达的范围”,保证局部最优。
  • 提前终止:if (maxLength >= n - 1)一旦最大范围覆盖了最后一个下标,立即返回true,无需遍历剩余元素,提升算法效率。
http://www.cnnetsun.cn/news/656605.html

相关文章:

  • PyTorch人脸追踪在树莓派5上的实时性优化方法
  • Arduino控制舵机转动实战案例解析
  • PyTorch-2.x-Universal镜像实测:Jupyter+GPU环境轻松跑通
  • USB-Blaster与Quartus Prime联动:驱动安装实战案例
  • 树莓派4b嵌入式Linux系统裁剪核心要点解析
  • 从零实现树莓派中文输入环境搭建
  • 毕业设计救星:用SAM3做智能分割,云端GPU省下显卡钱
  • MinerU配置GPU加速:CUDA驱动与device-mode设置详解
  • 在微服务与云原生时代下的SpringBoot部署策略深度剖析
  • BGE-Reranker-v2-m3部署总结:常见错误与最佳实践
  • Android16 rk3576支持NFTS格式U盘升级
  • 通义千问2.5-7B长文本处理:128k上下文部署优化技巧
  • 看完就想试!Z-Image-Turbo生成的画太震撼了
  • 中文语音识别新选择|SenseVoice Small镜像高效精准
  • 声纹系统监控:CAM++日志分析与性能追踪方法
  • 前后端分离学生网上请假系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 4090D显卡加持:PDF-Extract-Kit-1.0性能优化全攻略
  • bert-base-chinese微调保姆级教程:免配置环境5分钟上手
  • TurboDiffusion卡顿怎么办?资源释放与重启应用实操手册
  • 计算机毕业设计java音乐网站的设计与实现 Java 智能音乐服务平台设计与开发 基于 Java+SpringBoot 框架的音乐分享一体化系统研发
  • Z-Image-Base跨领域迁移:从艺术到工业设计的应用
  • Qwen2.5如何节省成本?按需GPU部署实战案例分享
  • Paraformer识别错误怎么办?三步排查法教你解决
  • OpenCode零基础教程:云端GPU免配置,1小时1块快速上手
  • YOLOv11与Detectron2对比:部署便捷性评测
  • Meta-Llama-3-8B-Instruct代码补全:IDE插件开发教程
  • YOLOv8交通流量统计:比地磁线圈省90%,1小时出报告
  • Qwen1.5-0.5B保姆级教程:小白3步跑通对话,云端GPU1块钱起
  • Raspberry Pi OS下修改静态IP的系统学习路径推荐
  • 大大减少企业级应用约95%的开发成本的智慧物流开源了