给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个位置。

示例 1:

输入: [2,3,1,1,4]
输出: true
解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。
示例 2:

输入: [3,2,1,0,4]
输出: false
解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/jump-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

算法思想:如果数组中 的一位b(1<=b<n)能够到达最后一位n,则a(1<=a<b<n)如果能到达b那么a也可以到达n。所以从后向前遍历,使用canArrive存储结果,根据canArrive[0]来判断结果。

package leetcode;public class leet55 {private int firstTrue;//todo:从倒数二个向前走,看当前位能否到达最后一个值为true的位置,根据canArrive【0】判断结果public boolean canJump(int[] nums) {if (nums == null || nums.length == 0) return false;if (nums.length == 1) return true;boolean[] canArrive = new boolean[nums.length];canArrive[nums.length - 1] = true;this.firstTrue = nums.length-1;jump(canArrive, nums);return canArrive[0];}private void jump(boolean[] canArrive, int[] nums) {//todo:从后向前便利for (int i = nums.length - 2; i >= 0; i--) {canArriveEnd(i, nums, canArrive);}}private void canArriveEnd(int cur, int[] nums, boolean[] canArrive) {//TODO:比对cur与第一个true的位置if (this.firstTrue - cur <= nums[cur]){canArrive[cur] = true;this.firstTrue = cur;}}public static void main(String[] args) {leet55 l = new leet55();int[] nums = {3,2,1,0,4};System.out.println(l.canJump(nums));}
}

最近在倒腾linux,后续会发安装linux与windows双系统的教程以及踩得坑。

leet55.跳跃游戏相关推荐

  1. leetcode-45 跳跃游戏II

    给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [2,3,1,1,4] 输 ...

  2. LeetCode-笔记-45.跳跃游戏II-贪心算法

    LeetCode-笔记-45.跳跃游戏II-贪心算法 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后 ...

  3. 《LeetCode力扣练习》第55题 跳跃游戏 Java

    <LeetCode力扣练习>第55题 跳跃游戏 Java 一.资源 题目: 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大 ...

  4. LeetCode 55. 跳跃游戏 中等难度

    55. 跳跃游戏 题目: 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1:输入: [2,3,1,1, ...

  5. Leetcode1696. 跳跃游戏 VI[C++题解]:dp和单调队列求滑动窗口最值

    文章目录 题目分析 题目链接 单调队列板子链接 Deque知识补充 题目分析 题目重述:给定一个数组(有正数有负数)和一个步长k,从下标0处开始往前跳,每次最多往前跳k步.求跳到最后一个位置,得分之和 ...

  6. LeetCode:跳跃游戏【55】

    LeetCode:跳跃游戏[55] 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.判断你是否能够到达最后一个位置. 示例 1: 输入: ...

  7. LeetCode 55跳跃游戏56合并区间57插入区间

    原创公众号:bigsai 希望和优秀的你做朋友,感觉不错还请一键三连. 回复进群即可加入和200+人一起打卡.上周打卡: LeetCode 47全排列Ⅱ&48旋转图像 LeetCode 49字 ...

  8. LeetCode 45跳跃游戏46全排列

    原创公众号:bigsai,回复进群加入力扣打卡群. 昨日打卡:LeetCode 42字符串相乘&43通配符匹配 跳跃游戏 题目描述: 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中 ...

  9. 【LeetCode 55】【LeetCode 45】 跳跃游戏

    55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1,1,4] ...

最新文章

  1. 那些年,我们一起刷过的计算机视觉比赛
  2. 哥哥,请原谅妹妹的自私!妹妹想做你的新娘...超级感人
  3. spring+cxf调用webservice接口
  4. python多线程为什么要用队列_Python程序中的线程操作-线程队列
  5. “约见”面试官系列之常见面试题第三十篇之计算机操作系统进程和线程区别
  6. 01json转字符串
  7. 经典冒泡排序-由低到高
  8. mysql 查看连接_怎么实时查看mysql当前连接数
  9. Linux-c对一个十六进制数的某一位取反
  10. 我的书《编写高质量代码—Web前端开发修炼之道》面市了,请大家多多支持
  11. 阿里达摩院赵昆:获评“中国客户服务领袖”
  12. STC学习:温度与光照传感器
  13. Android6.0之AMS启动App下篇
  14. Elasticsearch 的 Task 停止方法
  15. 批量取消腾讯微博关注
  16. 电脑PHP动画制作画板,涂鸦板简单实现 Html5编写属于自己的画画板
  17. c语言return 0和return 1的区别
  18. DirectX 总结
  19. win7一体机分区不见的文件如何恢复
  20. AR眼镜进入发展热潮,替代手机还有多远?​

热门文章

  1. 数控技能大赛计算机程序员,广西选手获第九届全国数控技能大赛数控程序员赛项一等奖...
  2. Scroller类的源码分析以及使用
  3. 2021-07-28 Python爬虫
  4. 为什么局部下降最快的方向就是梯度的负方向?
  5. matlab 图像处理 histogram shifting 基于直方图平移的信息隐藏
  6. (附代码)数独大作业【读取数独,解数独,生成唯一解数独(随机,特定形状,不同难度生成),玩数独】
  7. oracle如何获取xml节点,oracle解析xml,带命令空间的节点获取
  8. 搭建Cacti监控(2)
  9. ps制作图标时的尺寸
  10. 程序员,我要为了这个名号而疯狂