一,笨方法  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. NIO框架之MINA源码解析(四):粘包与断包处理及编码与解码

    1.粘包与段包 粘包:指TCP协议中,发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾.造成的可能原因: 发送端需要等缓冲区满才发送出去,造成粘包 接收 ...

  2. Python 解析XML实例(xml.sax)

    已知movies.xml <collection shelf="New Arrivals"> <movie title="Enemy Behind&qu ...

  3. Java-Runoob-高级教程-实例-方法:06. Java 实例 – 方法覆盖

    ylbtech-Java-Runoob-高级教程-实例-方法:06. Java 实例 – 方法覆盖 1.返回顶部 1. Java 实例 - 方法覆盖  Java 实例 前面章节中我们已经学习了 Jav ...

  4. win10 内置软件经常不用,还占空间?如何轻松卸载

    Step1:首先,在电脑桌面上点击左下角的开始菜单,在依次选择打开所有应用—Windows PowerShell,在Windows PowerShell上单击右键,选择以管理员身份运行: Step2: ...

  5. css属性—position的使用与页面的分层介绍

    一.引言: 在css众多属性中,position算是里面用的比较多也相对来说比较重要的属性了,它对于单个标签的“定位”.标签之间的“相对位置定位”还有网页的分层来说十分重要! 二.“定位的实现”具体介 ...

  6. [UE4]修改枪支碰撞体

    一.Simple Collision:显示简单碰撞体,Comlex Collision:显示复杂碰撞体 二.添加简单和复杂碰撞体 三.自动生成复杂精确的碰撞体

  7. win10使用4G 模块RNDIS模式上网

    Windons使用RNDIS模式上网步骤 Chapter 1 模块端配置 1模块设置为RNDIS模式 1.       以EC20CEFAG模块为例 2.       命令如下: 1)         ...

  8. SAS数据集推送到sql server 数据库 实现代码段

    libname fdsas ODBC datasrc=fdsas user=fdsas password=fdsas123 preserve_tab_names=yes connection=shar ...

  9. sublime 格式化react插件配置教程 jsfmt配置

    1.下载如下插件: https://github.com/ionutvmi/sublime-jsfmt#installation 这个插件是jsfmt,可以直接在package里搜索到: 2.user ...

  10. 17 RAID与mdadm管理命令

    在"14 磁盘及文件系统管理详解"中,我们详细介绍了磁盘的工作原理,但是,有一点我们一定要明白,作为现在存储数据的主要设备,机械磁盘早就是上个世纪的产品,而它的读写速度与内存.CP ...