Leetcode 题解 Jump Game
一,笨方法 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的更多相关文章
- Java for LeetCode 055 Jump Game
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 【LeetCode题解】二叉树的遍历
我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有 ...
- leetcode题解-122买卖股票的最佳时期
题目 leetcode题解-122.买卖股票的最佳时机:https://www.yanbinghu.com/2019/03/14/30893.html 题目详情 给定一个数组,它的第 i 个元素是一支 ...
- [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 ...
- [leetcode]45. Jump Game II青蛙跳(跳到终点最小步数)
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 【LeetCode题解】3_无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)
目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ...
- 【LeetCode题解】225_用队列实现栈(Implement-Stack-using-Queues)
目录 描述 解法一:双队列,入快出慢 思路 入栈(push) 出栈(pop) 查看栈顶元素(peek) 是否为空(empty) Java 实现 Python 实现 解法二:双队列,入慢出快 思路 入栈 ...
- 【LeetCode题解】232_用栈实现队列(Implement-Queue-using-Stacks)
目录 描述 解法一:在一个栈中维持所有元素的出队顺序 思路 入队(push) 出队(pop) 查看队首(peek) 是否为空(empty) Java 实现 Python 实现 解法二:一个栈入,一个栈 ...
- 【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)
目录 描述 解法一:字符串比较 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针(推荐) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以 ...
随机推荐
- [转][CentOS]开机时
来自:https://www.cnblogs.com/jcblog/p/6431252.html 在 CentOS 开机界面有两个菜单: 第一个选项正常启动,第二个选项急救模式启动(系统出项问题不能正 ...
- 制作OpenStack云平台centos6.5镜像
创建虚拟镜像 # qemu-img create -f raw Cloud_Centos6.5_64bit.img 10G [root@localhost ~]# ll /opt/CentOS-6.5 ...
- dell 7447加装SSD
老本加新件:) dell 7447第一款游匣? 14年冬入手,陪伴在下已有4年 一.需要拆机看接口(不知道的话),拆机无流程,网上一大把,此处不再赘述. 二.硬盘接口知识扩展: SATA3 m2接口有 ...
- [UE4]让机器人开枪射击
- plsql怎么执行sql脚本
首先,我们需要登录需要执行sql文件的用户,在我们确保sql文件无误的情况下,进入plsqldeveloper: 1,找到tools--->import tables --->选择sql ...
- Android Studio启动后出现cannot bind to 127.0.0.1:5037 10048的解决办法
第一次:先连接测试手机,然后启动Android studio时出现下面的弹框,网上查找资料说是360手机助手导致的,但是发现没有安装360手机助手只有360,卸载360后再启动Android stud ...
- 如何优雅地等待所有的goroutine退出
转自:https://www.cnblogs.com/cobbliu/p/4461866.html goroutine和channel是Go语言非常棒的特色,它们提供了一种非常轻便易用的并发能力.但是 ...
- [VS工具]远程在IIS附加调试代码
1.首先在服务器以管理员的方式打开msvsmon.exe(一般这个文件路径:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\ID ...
- kafka producer实例
1. 定义要发送的消息User POJO package lenmom.kafkaproducer; public class User { public String name; public in ...
- 03 Linux的目录结构与常见文件管理
Linux目录结构 根文件系统rootfs用来实现整个文件的管理: 而Linux下的所有文件都需要通过根文件系统才能访问: FHS:Filesystem Hierarchy Standard文件层次化 ...