一,笨方法  o(n^2)。果然看完别人的解法就自惭形秽啊!!

我用的动态规划方法。

比如输入

i:    0  1  2  3  4

————————————————

a[i]:   2  3  1  0  4

直接利用原来的数组计算。

a[i]>0 表示从a[i]出发可以达到终点,否则a[i] = 0。

首先,a[4]无论是多少,都能到4,因为到了4就不用走了。a[4] = 1;

现在看a[3] = 0,a[3] 只能在原地,所以a[3] = 0.

看a[2] = 1,那么看看 a[2 + 1]是否能到终点,如果可以a[2] =1,否则a[2] = 0.

看a[1] = 3,那么看看a[1+1],a[1+2],a[1+3]这三个数,是否有一个为1就可以了。

最终结果:

如果a[0] > 0,OK。否则false。

class Solution {
public:
bool canJump(vector<int>& nums) {
int n = nums.size();
vector<int> &a = nums;
int i,j; a[n-] = ; for(i = n-; i>=; i--)
{
for( j = ; j <= a[i]; j ++)
{
if(a[i+j] > )
{
break;
}
}
if(j > a[i])
{
a[i] = ;
}
}
return a[] > ;
}
};

二、高手的解法。厉害啊。

用max来记录能到达的最右侧的位置。初始max = 0。因为只能在第0个位置。

遍历每一个能到达的位置,然后不断更新max。

最后检测,max是否到达了n-1.

bool canJump(vector<int>& nums) {
int n = nums.size();
vector<int> &a = nums;
int i; int max_reach = ; //表示能达到的最大值 for(i = ; i<= max_reach; i++)
{
max_reach = max(max_reach, a[i] + i); //i 可以偏移 a[i]个单位。最大就是i + a[i]
if(max_reach >= n-) return true;
} return false;
}

Leetcode 题解 Jump Game的更多相关文章

  1. Java for LeetCode 055 Jump Game

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  2. 【LeetCode题解】二叉树的遍历

    我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有 ...

  3. leetcode题解-122买卖股票的最佳时期

    题目 leetcode题解-122.买卖股票的最佳时机:https://www.yanbinghu.com/2019/03/14/30893.html 题目详情 给定一个数组,它的第 i 个元素是一支 ...

  4. [LeetCode] 45. Jump Game II_ Hard tag: Dynamic Programming

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  5. [leetcode]45. Jump Game II青蛙跳(跳到终点最小步数)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  6. 【LeetCode题解】3_无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)

    目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ...

  7. 【LeetCode题解】225_用队列实现栈(Implement-Stack-using-Queues)

    目录 描述 解法一:双队列,入快出慢 思路 入栈(push) 出栈(pop) 查看栈顶元素(peek) 是否为空(empty) Java 实现 Python 实现 解法二:双队列,入慢出快 思路 入栈 ...

  8. 【LeetCode题解】232_用栈实现队列(Implement-Queue-using-Stacks)

    目录 描述 解法一:在一个栈中维持所有元素的出队顺序 思路 入队(push) 出队(pop) 查看队首(peek) 是否为空(empty) Java 实现 Python 实现 解法二:一个栈入,一个栈 ...

  9. 【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)

    目录 描述 解法一:字符串比较 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针(推荐) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以 ...

随机推荐

  1. Java学习---异常处理

    import java.util.Scanner; public class MyExceptionTest { public static void check(Square A) throws W ...

  2. stopPropagation()阻止事件的冒泡传递

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  3. Kowala协议:一组分布式,自我调节,资产跟踪特性的加密货币(二)

    对于稳定币来言,设计过程中会遇到很多细节的问题,今天来讲述下有关通证设计过程中的一些问题. 1.计算手续费 计算费是交易费的一部分,转移给kUSD矿工,并由以下公式决定: 其gasUsed(t) 是用 ...

  4. 修改了jdk在环境变量中的路径怎么cmd中的jdk版本没有变

    把path路径下的jdk配置放在前面%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot ...

  5. 报错:Column count doesn't match value count at row 1

    mysql错误:Column count doesn't match value count at row 1 意思是存储的数据与数据库表的字段类型定义不相匹配. 解决办法:检查段类型是否正确, 是否 ...

  6. 结合源码分析 bubble 使用注意事项

    使用dubbo时候要尽量了解源码,不然会很容易入坑. 一.服务消费端ReferenceConfig需要自行缓存 ReferenceConfig实例是个很重的实例,每个ReferenceConfig实例 ...

  7. python 实现排序算法(三)-选择排序和冒泡排序

    #/usr/bin/env python #coding:utf-8 #@auther="livermorium" ''' 选择排序 从数据中选择最小值,排在位置首位 再从剩余未排 ...

  8. 基于pyQt5开发的股价显示器(原创)

    #/usr/bin/env python # -*- coding: utf-8 -*- ''' @author="livermorium116" 为了绕开公司内网而开发的 股票实 ...

  9. TableStore:创建SyncClient+getRow读取一行数据

    1.通过控制台或者客户端,在TableStore中新建了实例owlforest,在实例详情中获取到实例访问地址endPoint 2.新建表user,确定主键为userid(Interger)类型,因为 ...

  10. 微信小程序内容组件图标 icon

    小程序内置了一下图标可以用 需要自定义图标的看这里 ==>微信小程序中使用iconfont/font-awesome等自定义字体图标 小程序内置图标使用示例 <icon type=&quo ...