跳跃游戏(两种详细解答)

2023-11-13

第一种(从前开始):
 

class Solution {
public boolean canJump(int[] nums) {
//定义reach为能够到达的最远距离
int reach=0;
for(int i=0;i<=reach;i++){
//temp表示在下标为i的位置上能够到达的最远距离
int temp=i+nums[i];
//更新reach
reach=Math.max(reach,temp);
//如果reach大于等于最后一个元素的下标,返回true
if(reach>=nums.length-1){
return true;
}
}
//程序能够执行到这说明不能返回true,所以返回false
return false;
}
}

我们用一个reach表示能够到达的最远距离,reach从首元素开始,我们从首元素开始向后遍历,每遍历一个元素就用该元素的下标加上该元素的值temp表示该元素能够到达的最远的下标,reach取reach和temp中的最大值(不断更新reach)
当reach能够大于等于最后一个元素的下标时返回true,循环结束后reach还小于最后一个元素下标返回false

第二种方法(从后面开始):

class Solution {
public boolean canJump(int[] nums) {
int n=nums.length;
//last表示最后一个下元素的下标
int last=n-1;
//从倒数第二个元素开始往前遍历,
//如果倒数第二个元素的下标加上倒数第二个元素的值能够大于等于最后一个元素的下标
//说明可以从倒数第二个元素跳到最后一个个元素
//再把倒数第二个元素定义为最后一个元素,看看倒数第三个元素能否跳到倒数第二个元素
//以此类推......
//如果倒数第二个元素的下标加上倒数第二个元素的值小于最后一个元素的下标
//最后一个元素仍然为倒数第一个元素。看看倒数第三个元素能否跳到最后一个元素
//以此类推
for(int i=n-2;i>=0;i--){
if(i+nums[i]>=last){
last=i;
}
//当最后一个元素可以定义为首元素时返回true
if(last==0){
return true;
}
}
//程序执行到这说明,
return false;
}
}


我们用last表示最后一个元素的下标,从倒数第二个元素开始向前遍历,如果倒数第二个元素能够到达最后一个元素,就把倒数第二个元素定义为最后一个元素,看看倒数第三个元素能否到达倒数第二个元素,以此类推
当首元素可以定义为最后一个元素是返回true,否则返回false

但是!!!!!!!!!


如果整个数组只有一个元素,我们无法找到倒数第二个元素,就会返回false,但其实是true因为它本身就是最后一个元素,我们只需要再最前面把这种情况写出来返回true就好了,完整代码:
 

class Solution {
public boolean canJump(int[] nums) {
if(nums.length==1){
return true ;
}
int n=nums.length;
//last表示最后一个下元素的下标
int last=n-1;
//从倒数第二个元素开始往前遍历,
//如果倒数第二个元素的下标加上倒数第二个元素的值能够大于等于最后一个元素的下标
//说明可以从倒数第二个元素跳到最后一个个元素
//再把倒数第二个元素定义为最后一个元素,看看倒数第三个元素能否跳到倒数第二个元素
//以此类推......
//如果倒数第二个元素的下标加上倒数第二个元素的值小于最后一个元素的下标
//最后一个元素仍然为倒数第一个元素。看看倒数第三个元素能否跳到最后一个元素
//以此类推
for(int i=n-2;i>=0;i--){
if(i+nums[i]>=last){
last=i;
}
//当最后一个元素可以定义为首元素时返回true
if(last==0){
return true;
}
}
//程序执行到这说明,
return false;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跳跃游戏(两种详细解答) 的相关文章

  • 如何在 Windows 上的 GCC 中链接 CS50 C 库

    我是 编程新手 一直在尝试使用以下命令编译我的代码MinGW https en wikipedia org wiki MinGW GCC 但我尝试包括CS50 https en wikipedia org wiki CS50 cs50 c
  • 为什么 xcode IDE 认为 `friend` 是保留字

    我一直在开发一个个人项目 并在我创建的新类中包含以下代码 property readonly getter isFriend BOOL friend 它似乎没有任何问题 当我构建它时 它可以编译得很好 但是当我们在xcode IDE看起来像
  • 使用 Mockitos 传递参数化输入

    我正在使用 Mockito 进行单元测试 我想知道是否可以使用 Junit 测试中的方式发送参数化输入参数 e g InjectMocks MockClass mockClass new MockClass Test public void
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 对象变空似乎是 Hangfire 中的反序列化问题

    Hangfire 似乎无法反序列化我的原始版本Scheduler对象及其所有状态 我正在调用其 Execute 方法BackgroundJob Enqueue 如下所示 Scheduler new FileInFileOut FileIn
  • 我们可以用java定制一个垃圾收集器吗?

    我们知道java的垃圾收集器是一个低优先级线程 在java中我们可以创建任何具有高优先级的线程 那么是否有可能拥有我们自己定制的具有可变优先级的垃圾收集器线程 我们可以根据内存管理的级别进行设置 有人尝试过吗 如果是的话 您能分享一些关于如
  • Google App Engine数据存储区字符串编码问题

    你好 我正在使用 Google App Engine 进行一个项目 并且需要存储一些字符串 我正在使用 Java 和JDOHelper getPersistenceManagerFactory transactions optional 在
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n
  • servlet 如何获取 servlet 之外的文件的绝对路径?

    我们一直在使用 System getProperties user dir 来获取属性文件的位置 现在它已经部署在 Tomcat 上 通过 servlet 系统调用将位置指定为 tomcat 而不是属性文件所在的位置 我们如何动态调用属性文
  • JBoss 5 截断 base64 cookie 字符串的尾部 =

    从 JBoss 4 升级到 JBoss 5 后 我注意到最烦人的回归 它截断 base64 cookie 值的尾部等号 我花了很长时间才明白问题不是我的代码而是 JBoss 的 我用 google 搜索了一下 发现这是一个已知的问题issu
  • Web 应用程序似乎启动了名为 [22] 的线程,但未能停止它。这很可能造成内存泄漏

    我有一个 Web 应用程序 后端有 Servlet 部署在 tomcat 上 该应用程序是简单的java应用程序 我经常在服务器日志中看到此错误 严重 Web 应用程序似乎启动了一个名为 22 但未能阻止它 这很有可能 造成内存泄漏 是否存
  • Admob - 没有广告可显示

    你好 我尝试制作一些在 Android 手机上显示广告的示例程序 并尝试在 v2 2 的模拟器上测试它 代码中的一切似乎都很好 但调试器中的 AdListener 表示 响应消息为零或空 onFailedToReceiveAd 没有广告可显
  • C 中的 2 个字符要短

    我有2个字符 Char 128和查尔2 如何将这些字符转为 Short640 in C 我试过了 unsigned short getShort unsigned char array int offset short returnVal
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • 在 Vavr 中结合任一者?

    我有几个Vavr https www vavr io Either https www vavr io vavr docs either的 我想调用一个函数Right每个 Either 的值 例如 Either
  • Web 和 winforms 的 .Net 身份验证

    我有一个为客户端构建的 ASP NET Web 应用程序 它使用默认的 ASP NET 表单身份验证 他们现在请求一个能够 与 Web 应用程序一起工作的桌面 WinForms 应用程序 我已经创建了 Web 服务来访问他们想要从 Web
  • 将二进制长字符串转换为十六进制 C#

    我正在寻找一种将长二进制字符串转换为十六进制字符串的方法 二进制字符串看起来像这样 0110011010010111001001110101011100110100001101101000011001010110001101101011 我
  • 错误:运算符不存在:整数 = 字符变化,使用 Postgres 8.2

    我有一个用旧版本的 Eclipse Ganymede 如果我没记错的话 开发的 Java EE Web 应用程序 我最近迁移到 Kubuntu 12 04 LTS 并将应用程序迁移到 Eclipse Kepler 我从 Eclipse 网站
  • 获取线段上最接近另一个点的点[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想找到线段AB上最接近另一个点P的点 我的想法是 Get a1 and b1由直线公式y1 a1x b1 使用 A 点

随机推荐

  • Flutter 应用开发的pubspec.yaml文件说明

    pubspec yaml文件简介 作用 pubspec yaml是Flutter项目中的配置文件 它用于定义项目的依赖项 资源文件以及其他相关配置 示例 name audioplayers example description Demon
  • 进程和线程的区别

    转自文章进程和线程的区别 面试必考 进程和线程的区别 1 根本区别 进程和线程的根本区别是进程是操作系统 OS 资源分配的基本单位 而线程是处理器 CPU 任务调度和执行的基本单位 2 资源开销 每个进程都有独立的代码和数据空间 程序上下文
  • 【Nginx系列】- Nginx源码复杂安装

    目录 一 下载nginx源码 二 依赖环境准备 三 编译安装 四 加入系统服务 Nginx安装方式有多种 本篇介绍源码复杂安装 目的是进一步了解Nginx 一 下载nginx源码 官网下载最新稳定版 nginx download 二 依赖环
  • 23种设计模式总结

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 23种设计模式总结 设计模式是一套被反复使用 多数人只晓得 经过分类编目的的 代码设计经验的总结 1 简单工厂模式 建立一个工厂类 对同一接口下的类进行实例化的创建 也就是在
  • Otter源码深入详解(二)

    先从manager的三个子模块开始分析 一 biz模块 autokeeper AutoKeeperCollector类 继承自InitializingBean afterPropertiesSet 调用后 调用startCollect st
  • 参考系列2:优化库——ceres(一)快速概览

    目录 1 ceres快速概览 1 1 问题建模和求解 1 1 1 问题建模 1 1 2 问题求解 1 2 ceres使用流程 1 3 求导方法 构建代价函数 STEP2 1 3 1 解析求导 自定义求导 SLAM中常用的 1 3 2 其他求
  • jmap heap输出解析

    jmap heap输出解析 jmap简介 jmap语法 jmap heap查看jvm参数 堆栈信息 jmap heap输出jvm参数解析 jmap简介 jmap JVM Memory Map 作用一方面是获取dump文件 堆转储快照文件 二
  • [分享] Python实现的基于深度学习的手写数字识别算法

    本文将采用深度学习中的卷积神经网络来训练手写数字识别模型 使用卷积神经网络建立合理的模型结构 利用卷积层中设定一定数目的卷积核 即滤波器 通过训练数据使模型学习到能够反映出十个不同手写提数字特征的卷积核权值 最后通过全连接层使用softma
  • Android studio安装与配置

    1 首先下载Android studio安装包 下载地址为 http www android studio org 这里采用3 0版本进行演示 对应安装包为android studio ide 171 4408382 windows exe
  • 【微服务】Nacos:发现、配置和管理微服务

    Nacos 发现 配置和管理微服务 Nacos 在阿里巴巴起源于 2008 2008 2008 年五彩石项目 完成微服务拆分和业务中台建设 成长于十年双十一的洪峰考验 沉淀了简单易用 稳定可靠 性能卓越的核心竞争力 随着云计算兴起 2018
  • odoo 附件上传的三种姿势

    odoo 附件上传的三种姿势 因公司业务需要实现上传附件功能 一番折腾找到了三种附件上传的姿势 不过好像用处不大 1 下载 odoo 自带模块 在应用里搜索附件列出以及文档索引 安装模块即可 这样在编辑界面就可以看见附件上传按钮 上传即可
  • 使用微软官方工具MediaCreationTool制作Windows10的U盘系统安装盘

    需要重装系Windows10系统 这里介绍使用微软官方工具MediaCreationTool制作Windows10的U盘安装盘的步骤 1 点击链接https www microsoft com zh cn software download
  • [每日两题系列]刷算法题咯~~

    今日题目 最多能完成排序的块II 统计子矩阵 本系列所选题目均来自力扣或者牛客网站 所选题目主要是以其中的简单题为主 中等题为辅 包含少数困难题 原因是 本人目前能力还不够 开展这个系列的目的是督促自己 在暑假的时间里也要保持有一定的刷题量
  • Docker修改默认数据目录Docker Root Dir

    环境 Docker版本 19 03 12 OS版本 CentOS Linux release 7 7 1908 Core docker 默认数据目录 Docker Root Dir 是 var lib docker 可通过 docker i
  • 数组参数:交换数组中最大值和最小值的位置

    题目 定义一个函数 功能 实现数组中最大值和最小值交换位置 解题思路 定义一个数组参数的函数 首先要先找到数组元素中的最大值和最小值 然后用我们常用的方法来将最大值和最小值进行转换 最后在main函数中调用所定义的f函数 include
  • 【Python游戏】Python各大游戏合集(3):飞翔的小鸟、俄罗斯方块、24点小游戏、吃豆豆小游、扫雷

    相关文件 关注小编 私信小编领取哟 当然别忘了一件三连哟 公众号 Python日志 可以关注小编公众号 会不定时的发布一下Python小技巧 还有很多资源可以免费领取哟 源码领取 加Python学习交流群 773162165 可以领取哟 开
  • 前端面试题---框架篇

    Vue面试题 面试题 Vue2 x 生命周期有哪些 Vue生命周期总共可以分为8个阶段 创建前后 载入前后 更新前后 销毁前销毁后 以及一些特殊场景的生命周期 面试题 第一次进入组件或者页面 会执行哪些生命周期 beforeCreate c
  • 7.20黄金涨势是否会延续?今日如何布局

    近期有哪些消息面影响黄金走势 今日黄金多空该如何研判 黄金消息面解析 国际金价周四 7月20日 徘徊在1984美元 盎司附近 投资者继续押注近期公布的美国经济数据让美联储有理由暂停加息 金价上个交易日触及的5月24日以来新高1985 25美
  • python爬取支付宝基金数据_钱袋子往哪走?教你用Python爬取基金数据

    年关将至 钱袋子往哪走 有人买了定期存款 3年 年利率 3 987 按存50w计算 0 0385 50万 3年息 6万 月息 1666 72元0 039785 50万 3年息 6 21万 月息 1724 53元0 04125 50万 3年息
  • 跳跃游戏(两种详细解答)

    第一种 从前开始 class Solution public boolean canJump int nums 定义reach为能够到达的最远距离 int reach 0 for int i 0 i lt reach i temp表示在下标