LeetCode:跳跃游戏【55】

题目描述

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。

示例 1:

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

示例 2:

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

题目分析

这道题最好的解法应该就是动态规划,但是怎么个规划法呢?

我们可以这样想,如果倒数第二个元素可以大于等于1,那么我们就可以把问题转换为是否到达倒数第二个元素,那么一步一步向前推就把问题分解了

我们需要看第N个元素能够跳跃的最远范围内,是否存在可以到达终点的节点

Java题解

class Solution {public boolean canJump(int[] nums) {Index[] dp = new Index[nums.length];for (int i = 0; i < dp.length; i++) {dp[i] = Index.UNKNOWN;}dp[dp.length-1]=Index.GOOD;for (int i = nums.length - 2; i >= 0; i--) {int furthestJump = Math.min(i + nums[i], nums.length - 1);for (int j = i + 1; j <= furthestJump; j++) {if (dp[j] == Index.GOOD) {dp[i] = Index.GOOD;break;}}}return dp[0]==Index.GOOD;}
}enum Index{GOOD,BAD,UNKNOWN
}

  

转载于:https://www.cnblogs.com/MrSaver/p/9495587.html

LeetCode:跳跃游戏【55】相关推荐

  1. Leetcode跳跃游戏

    文章目录 Leetcode跳跃游戏 题目简介 跳跃游戏1 跳跃游戏2 Leetcode跳跃游戏 题目简介 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最 ...

  2. leetcode 跳跃游戏系列 c++

    文章目录 [55. 跳跃游戏](https://leetcode-cn.com/problems/jump-game/) [45. 跳跃游戏 II](https://leetcode-cn.com/p ...

  3. LeetCode(跳跃游戏)

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

  4. Leetcode 跳跃游戏

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

  5. leetcode跳跃游戏C语言,LeetCode:跳跃游戏

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

  6. leetcode:跳跃游戏 IV

    dijk 22/32 class Solution {public:int minJumps(vector<int>& arr) {// dijk? 最短路径?if(arr.siz ...

  7. 跳跃游戏 I - VII

    跳跃游戏 [55. 跳跃游戏](https://leetcode.cn/problems/jump-game/) [45. 跳跃游戏 II](https://leetcode.cn/problems/ ...

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

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

  9. 贪心——跳跃游戏(Leetcode 55)

    题目选自Leetcode 55. 跳跃游戏 这道题表面上不是求最值,但是可以改一改: 请问通过题目中的跳跃规则,最多能跳多远?如果能够越过最后一格,返回 true,否则返回 false. 所以解题关键 ...

最新文章

  1. linux c 获取进程 可执行文件路径
  2. 机器学习算法源码全解析(三)-范数规则化之核范数与规则项参数选择
  3. 用python做加法_Python不用加减乘除做加法
  4. 一款不错的编程字体Source Code Pro
  5. lisp 设计盘形齿轮铣刀_用AutoLISP程序设计盘形齿轮铣刀渐开线齿形
  6. 项目管理系统Redmine安装
  7. EditPlus 使用技巧集萃(转)
  8. apache2 wordpress目录权限_Linux下WordPress建站步骤
  9. 怎样png转jpg还可以保持原有大小?
  10. python初学者-计算小于100的最大素数
  11. 相关系数excel_如何求组内相关系数ICC?(应用篇)
  12. excel 一列的数据除以另一列
  13. @linux下tar解压失败a lone zero解决方法
  14. 数据分析师,如何向亲友解释自己的工作
  15. 中国有嘻哈:网易云、虾米音乐歌词爬虫项目分享
  16. 名帖97 赵孟頫 小楷《洛神赋》
  17. Nessus 扫描web服务
  18. C语言随机刷新,C语言 刷新缓冲区
  19. 分别解释final,finally,finalize是什么?
  20. C#输入三条边判断是否为三角形

热门文章

  1. Windows 2000配置Web服务器
  2. 科达南沙电子警察“扩编”
  3. Git学习(一)git服务器的简易搭建
  4. Python notes
  5. Nomad技术手册:整体架构(Architecture)
  6. Consul入门02 - 运行Consul代理
  7. 应用开发者必须了解的Kubernetes网络二三事
  8. Docker使用Link在容器之间建立连接
  9. C语言 输入一个正整数n,再输入n个字符,如果是小写字符就将其转换为大写字符,如果是大写字符就 转换为小写字符
  10. Java 洛谷 P1308 统计单词数