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

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

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

示例 1:

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

示例 2:

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

动态规划:

思路:每次计算当前所能走到的最大的索引,当nums[i] = 0 并且当前能走的最大值等于当前位置则返回false,当前所能走的最大值大于等于nums.length - 1的时候,可以走到最后。

 class Solution {
public static boolean canJump(int[] nums) {
int maxPos = 0;
if(nums[0]==0 && nums.length >1)return false;
else if (nums.length == 1)return true;
for(int i = 0;i < nums.length;i++){
maxPos = Math.max(maxPos,nums[i]+i);
if(maxPos >=nums.length-1){
return true;
}
if(nums[i] == 0 && maxPos - i <= 0){//注意,不要用maxPos - nums[i] - i <= 0来判定false如[2,3,1,1,4]当i=2时 满足这个。当时case [2,3,1,1,0,1]为了让i=4时返回false
return false;
}
}
return false;
}
}

和上面写的一样

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

以前写的好烂还是看下面的吧

从后往前贪心,如果当前能跳跃的步数加索引大于最后能到的位置,则最后能到的位置记录当前的索引

class Solution:
def canJump(self, nums: List[int]) -> bool:
endReachable = len(nums)-1
for i in range(len(nums)-1,-1,-1):
if nums[i]+i >= endReachable:
endReachable = i
return endReachable == 0

从前往后,遍历每个位置,找到跳跃最远的位置

 class Solution:
def canJump(self, nums: List[int]) -> bool:
k = 0
for i in range(len(nums)):
if i > k:
return False
k = max(k,i+nums[i])
return True

2020-01-17 17:59:32

LeetCode--055--跳跃游戏(java)的更多相关文章

  1. leetcode 55. 跳跃游戏 JAVA

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

  2. LeetCode:跳跃游戏【55】

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

  3. 力扣Leetcode 45. 跳跃游戏 II - 贪心思想

    这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...

  4. Java实现 LeetCode 55 跳跃游戏

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

  5. Java实现 LeetCode 45 跳跃游戏 II(二)

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

  6. [leetcode] 45. 跳跃游戏 II(Java)(动态规划)

    45. 跳跃游戏 II 动态规划 此题可以倒着想. 看示例: [2,3,1,1,4] 我们从后往前推,对于第4个数1,跳一次 对于第3个数1,显然只能跳到第4个数上,那么从第3个数开始跳到最后需要两次 ...

  7. LeetCode 45跳跃游戏&46全排列

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

  8. [Leetcode]44.跳跃游戏Ⅰ&&45.跳跃游戏Ⅱ

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

  9. LeetCode 45. 跳跃游戏 II | Python

    45. 跳跃游戏 II 题目来源:https://leetcode-cn.com/problems/jump-game-ii 题目 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素 ...

  10. 力扣Leetcode 55. 跳跃游戏

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

随机推荐

  1. WeekMap WeakSet的用途

    1. WeekMap WeakSet有一个特性,就是加入其中的元素不会算入引用计数,所以当其他地方没有对对象的引用之后,就可以删除了,不会造成内存泄漏. WeekMap的一个用途是保存Dom节点引用, ...

  2. LinkedHashMap 源码分析

    LinkedHashMap LinkedHashMap 能解决什么问题?什么时候使用 LinkedHashMap? 1)LinkedHashMap 按照键值对的插入顺序进行遍历,LinkedHashM ...

  3. iview在项目中遇到的坑

    1.下拉框选中某一项搜索发现总是搜不到,最后发现是选中后选中值后边莫名多了很长的空格,原因很简单,在代码中opction闭合标签和主体没有在一行. 2.iview+vue项目中,用百分比或者displ ...

  4. [转载]借助openssl解析ECC公钥

    void GetPubKey(const char* FilePath, char* PubKey) { unsigned ]; unsigned char *pTmp = NULL; FILE *f ...

  5. Golang new() vs make()

    对于Golang的new() 和 make()的用法有些混乱,感觉这篇资料讲解较好,翻译一下,方便学习! 原文地址:http://www.godesignpatterns.com/2014/04/ne ...

  6. tensorflow和pytorch的区别

    pytorch是动态框架,tensorflow是静态框架 针对tensorflow,我们先构造了一个计算图,构建完之后,这个计算图就不能改变了,我们再开启会话,输入数据,进行计算.那么这个流程就是固定 ...

  7. python控制流-循环

    一.while循环语句 1.只要 while 语句的条 件为 True,while 子句中的代码就会执行. 2.while 语句总是包含下面几 部分: (1)关键字(2)条件(求值为 True 或 F ...

  8. 在使用spring中的ContextConfiguration、test注解时出现的错误

    错误: 在使用测试注解时出现ContextConfiguration注解和test注解无法正常导包使用的编译异常,如图: 解决办法: 将pom.xml文件中以下依赖管理 中的<scope> ...

  9. HTML: 引号不能忽视

    在js中常常生成拼接html,然后放到dom中,但是有些拼接的html标签需要加一些指或者属性,这个时候不能忽略引号 如果data.link_tel有空格,不加单引号导致value的值不完全 str ...

  10. Can you answer these queries? HDU 4027 线段树

    Can you answer these queries? HDU 4027 线段树 题意 是说有从1到编号的船,每个船都有自己战斗值,然后我方有一个秘密武器,可以使得从一段编号内的船的战斗值变为原来 ...