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

LeetCode 每日一题笔记 日期:2026.05.17 题目:1306. 跳跃游戏 III

LeetCode 每日一题笔记0. 前言日期2026.05.17题目1306. 跳跃游戏 III难度中等标签数组、深度优先搜索、广度优先搜索1. 题目理解问题描述给定一个非负整数数组arr从下标start出发每次可以从下标i跳到i arr[i]或i - arr[i]。你无法跳出数组边界。判断是否能够跳到数组中任意一个值为 0 的下标。示例输入arr [4,2,3,0,3,1,2],start 5输出true解释路径5 → 4 → 1 → 3下标3的值为0。2. 解题思路核心观察这是一个典型的图遍历问题每个下标是节点跳跃规则是边需避免重复访问否则会无限递归/循环只要遍历过程中遇到值为0的节点即可返回true。算法步骤检查当前下标是否值为0若是直接返回true标记当前下标为已访问防止循环尝试向右跳i arr[i]若合法且未访问则递归尝试向左跳i - arr[i]若合法且未访问则递归若两条路径均失败恢复标记并返回false。3. 代码实现packagelc1306;publicclassSolution{publicbooleancanReach(int[]arr,intstart){if(arr[start]0){returntrue;}inttemparr[start];intnstartarr[start];if(narr.length-1arr[n]!-1){arr[start]-1;if(canReach(arr,n)){returntrue;}arr[start]temp;}intmstart-arr[start];if(m0marr.length-1arr[m]!-1){arr[start]-1;if(canReach(arr,m)){returntrue;}arr[start]temp;}returnfalse;}}4. 代码优化说明减少了冗余的边界判断统一处理左右跳转逻辑同时去掉了不必要的temp变量与恢复操作直接用访问标记避免循环packagelc1306;importjava.util.HashSet;importjava.util.Set;publicclassSolution{publicbooleancanReach(int[]arr,intstart){returndfs(arr,start,newHashSet());}privatebooleandfs(int[]arr,intindex,SetIntegervisited){// 越界 或 已访问过直接返回 falseif(index0||indexarr.length||visited.contains(index)){returnfalse;}// 到达目标值 0返回 trueif(arr[index]0){returntrue;}// 标记为已访问visited.add(index);intvalarr[index];// 左右两个方向只要有一条路通就返回 truereturndfs(arr,indexval,visited)||dfs(arr,index-val,visited);}}5. 复杂度分析时间复杂度O ( n ) O(n)O(n)每个下标最多访问一次空间复杂度O ( n ) O(n)O(n)递归栈深度最坏为数组长度。6. 总结核心思路是DFS 遍历 访问标记利用数组原地修改标记访问状态优化后代码逻辑更简洁通过短路||直接返回结果减少了分支判断本题也可用 BFS 实现思路一致避免递归栈溢出风险。
http://www.rkmt.cn/news/1307879.html

相关文章:

  • Neovim集成Minecraft启动器:开发者工作流与游戏管理的无缝融合
  • 一站式网盘下载解决方案:轻松获取九大网盘直链的完整指南
  • 终极指南:用UXTU轻松解锁电脑隐藏性能,让你的Intel/AMD设备火力全开
  • 荣耀校招0507笔试真题解析
  • 动态数据增强策略:从静态变换到自适应课程学习
  • 终极指南:使用Highlighter浏览器扩展实现网页文本持久化高亮
  • 调试串口别只靠打印!用示波器看TTL波形排查‘数据发不出’问题
  • 如何高效获取无水印抖音内容:douyin-downloader完整指南
  • idea 安装cline
  • AMD供应链多元化:技术、生态与AI芯片代工选择的深度博弈
  • YOLO26可运行项目,有上百个模块,都是我自己之前发SCI二区时,集成的一些模块,适合需要算法创新,模块改进的朋友。
  • S32K324双核M7实战:如何利用192KB TCM提升关键代码性能
  • B站视频转文字终极指南:3分钟掌握高效内容整理神器
  • Linux高效运维:从安全操作到脚本优化的实战习惯指南
  • 耐高温耐腐蚀合金厂商推荐:高端Hastelloy C-276合金厂商联系方式 - 品牌2025
  • 为ChatGPT集成OCR功能:从原理到实现的浏览器扩展开发指南
  • 告别网络瓶颈:手把手教你用K8s RDMA Device Plugin和SR-IOV CNI搭建超低延迟通信栈
  • Flowframes:3分钟掌握Windows平台AI视频插帧完整指南
  • AI代码生成工具SynthCode:从需求到可运行API的自动化实践
  • Equalizer APO专业配置指南:系统级音频均衡解决方案
  • 终极指南:3分钟掌握Windows与Office智能激活解决方案
  • CANape实战:如何绕过CSMconfig识别问题,用VN5610A的Network模式连接ECAT ADMM模块
  • 如何5步完成Windows和Office智能激活:KMS_VL_ALL_AIO完整指南
  • 别再死磕NI9234了!手把手教你用国产模块搞定振动测试(附IEPE传感器配置)
  • DataX实战:从架构原理到千万级数据同步调优
  • 5步彻底修复Windows更新:Reset-Windows-Update-Tool终极指南
  • 3分钟掌握:如何在Blender中快速使用VRM插件创建虚拟角色
  • Arm CoreLink CCI-500缓存一致性互联技术解析
  • SpringBoot项目实战:5分钟搞定ip2region离线IP库集成(含Nginx代理IP获取避坑指南)
  • STM32 U8g2菜单无限循环滑动:指针数组与缓动动画实现