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

LeetCode第55题 - 跳跃游戏

题目

解答一

class Solution {   public boolean canJump(int[] nums) {if (nums == null || nums.length == 0) {return false;}if (nums[0] == 0 && nums.length == 1) {return true;}return canJump(nums, 0);}public boolean canJump(int[] nums, int index) {if (index > nums.length - 1) {return false;}if (nums[index] == 0) {return false;}if (nums[index] + index >= nums.length - 1) {return true;}// for (int i = 1; i <= nums[index]; ++i) {for (int i = nums[index]; i > 0; --i) {if (canJump(nums, index + i)) {return true;}}return false;}
}

解答二

class Solution {public boolean canJump(int[] nums) {int max = 0;for (int i = 0; i < nums.length && i <= max; i++) {max = Math.max(max, i + nums[i]);if (max >= nums.length - 1) {return true;}}return false;}
}

总结
解答一使用递归,可以解决问题,但当输入规模增大时,可能出现递归过多、栈溢出的现象,同时效率也不满足要求。
解决二使用贪心算法,简单、直接、暴力、有效。变量max的使用,值得深入理解。

http://www.xdnf.cn/news/18445.html

相关文章:

  • 学习游戏制作记录(合成表UI和技能树的UI)8.22
  • SpringBoot项目创建的五种方式
  • 53 C++ 现代C++编程艺术2-枚举和枚举类
  • C++ unistd.h库文件介绍(文件与目录操作, 进程管理, 系统环境访问, 底层I/O操作, 系统休眠/执行控制)
  • Linux服务测试
  • 【链表 - LeetCode】24. 两两交换链表中的节点
  • 深入理解 Java IO 流 —— 从入门到实战
  • 排序(数据结构)
  • nanoGPT 部署
  • JUC之Fork/Join
  • EP4CE40F23I7N Altera FPGA Cyclone IV E
  • LLM实践系列:利用LLM重构数据科学流程
  • shell脚本第二阶段-----选择结构
  • 企业设备系统选型:功能适配度分析
  • Vue 插槽(Slots)全解析1
  • B树,B+树,B*树
  • 文件包含的学习笔记
  • 嵌入式Linux学习 -- 网络1
  • 深度学习——神经网络
  • canvas绘制图片等比缩放
  • Vue2+Vue3前端开发_Day6
  • Linux笔记8——shell编程基础-2
  • 网络实践——Socket编程UDP
  • 视频拼接融合技术:打造全景视界的革命性产品
  • API模型与接口弃用指南:历史、替代方案及开发者应对策略
  • `git mv` 重命名 Git 仓库中的文件夹
  • 多人编程新方式:cpolar 让 OpenHands 远程开发更轻松
  • 20250822在Ubuntu24.04.2下指定以太网卡的IP地址
  • 数据分析专栏记录之 -基础数学与统计知识 2 概率论基础与python
  • 安全帽检测算法如何提升工地安全管理效率