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

leetcode_55. 跳跃游戏

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 , 所以永远不可能到达最后一个下标。

提示:

  • 1 <= nums.length <= 10^4
  • 0 <= nums[i] <= 10^5

代码思路:

  1. 初始化dp 数组,用来记录从索引 0 到当前索引 i 可以跳跃的最大距离
  2. 首先将 dp[0] 初始化为 nums[0],因为从索引 0 出发最多可以跳 nums[0] 个步骤。
  3. 定义一个变量 max,用来记录当前可以跳跃的最大距离。初始化为 dp[0]
  4. 遍历数组 nums 的其余部分,对于每个索引 i:
    1. 如果 i 已经超出了当前可以跳跃的范围(i > max),说明无法到达该位置,直接返回 false
    2. dp[i]=Math.max(i+nums[i],dp[i-1]): 更新 dp[i] 为从索引 i-1 出发最远可以跳到的距离和从索引 i 出发最远可以跳到的距离的最大值。
    3. 更新 max 为当前可以跳跃的最大距离。
    4. 剪枝:如果 max 已经大于等于 nums.length - 1,说明可以从索引 0 跳到最后一个索引,直接返回 true
  5. 如果整个循环结束,仍然无法从索引 0 跳到最后一个索引,返回 false

时间复杂度为 O(n),空间复杂度为 O(n),其中 n 是数组 nums 的长度。它使用动态规划的方法,利用了 dp 数组来记录当前可以跳跃的最大距离,从而避免了重复计算,达到了较高的效率。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【杂乱算法】七种常见的排序
  • 如何使用unittest和pytest进行python脚本的单元测试
  • 计算机储存单位换算:1KB等于多少GB
  • MS8561/8562精密、低噪、CMOS、轨到轨输入输出运算放大器
  • AWS 注册一年后是否需要花钱?
  • 贪心算法之重叠区间问题
  • Linux | 深入探究Linux进程控制:从fork到进程等待再到进程替换
  • 使用WINUI3 编写一个小软件1 C#
  • 如何更改select option边框颜色和选中的颜色
  • 鸿蒙(API 12 Beta3版)【录像流二次处理(C/C++)】媒体相机开发指导
  • 图像处理 -- 仿射变换之Affine Transformation
  • 多个条件同时查询时username和name无法被解析
  • git 配置SSH
  • 计算机网络:DNS、子网掩码、网关
  • 查找技术(4/6 改)
  • Computed property XXX was assigned to but it has no setter
  • emacs初体验
  • es6(二):字符串的扩展
  • HTTP--网络协议分层,http历史(二)
  • java概述
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • tensorflow学习笔记3——MNIST应用篇
  • use Google search engine
  • ViewService——一种保证客户端与服务端同步的方法
  • Wamp集成环境 添加PHP的新版本
  • WebSocket使用
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 说说动画卡顿的解决方案
  • 通过几道题目学习二叉搜索树
  • 微信开放平台全网发布【失败】的几点排查方法
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 一起参Ember.js讨论、问答社区。
  • 在Mac OS X上安装 Ruby运行环境
  • $ git push -u origin master 推送到远程库出错
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Python第六天)文件处理
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (zhuan) 一些RL的文献(及笔记)
  • (苍穹外卖)day03菜品管理
  • (十)T检验-第一部分
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (五)activiti-modeler 编辑器初步优化
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • **PHP二维数组遍历时同时赋值
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .net6+aspose.words导出word并转pdf
  • .NET导入Excel数据
  • .NET分布式缓存Memcached从入门到实战
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验