leetcode-55 Jump Game
来源:互联网 发布:迅雷mac版下载速度是0 编辑:程序博客网 时间:2024/05/22 03:03
原题链接: http://oj.leetcode.com/problems/jump-game/
这道题是动态规划的题目,所用到的方法跟是在Maximum Subarray中介绍的套路,用“局部最优和全局最优解法”。我们维护一个到目前为止能跳到的最远距离,以及从当前一步出发能跳到的最远距离。局部最优local=A[i]+i,而全局最优则是global=Math.max(global, local)。递推式出来了,代码就比较容易实现了。因为只需要一次遍历时间复杂度是O(n),而空间上是O(1)。代码如下:
(D[i]表示从下标i能到达的最远距离,则D[i] = A[i]+i)
class Solution {public: bool canJump(int A[], int n) { if(A == NULL || n <= 0) return false; int i,reach; //reach表示能到达的最远距离 for(i = 0, reach = 0; i <= reach && i < n; i++){ reach = max(i+A[i],reach); } if(reach < n - 1) return false; return true; }};
这也是一道比较经典的动态规划的题目,不过不同的切入点可能会得到不同复杂度的算法,比如如果维护的历史信息是某一步是否能够到达,那么每一次需要维护当前变量的时候就需要遍历前面的所有元素,那么总的时间复杂度就会是O(n^2)。所以同样是动态规划,有时候也会有不同的角度,不同效率的解法。这道题目还有一个扩展Jump Game II,有兴趣的朋友可以看看。
转自:http://blog.csdn.net/linhuanmars/article/details/21354751
0 0
- LeetCode 55: Jump Game
- [leetcode 55] Jump Game
- LeetCode(55) Jump Game
- [LeetCode 55]Jump Game
- leetcode || 55、Jump Game
- LeetCode-55-Jump Game
- leetcode-55 Jump Game
- Jump Game - LeetCode 55
- 【Leetcode】Jump Game #55
- Leetcode #55 Jump Game
- 【LeetCode】55:Jump Game
- LeetCode(55) Jump Game
- Leetcode#55||Jump Game
- (leetcode #55)Jump Game
- Leetcode 55 - Jump Game
- 【leetcode】【55】Jump Game
- LeetCode 55 - Jump Game
- 【LeetCode-55】Jump Game
- JPA注解
- HDU1848 Fibonacci again and again【博弈】
- 2-5-1 体验常成员函数
- (R语言)图形过程
- 第三周项目二 三角形 2 优化
- leetcode-55 Jump Game
- 一些常用php的header头
- java异常分类
- 最小生成树的模板
- 第五周 项目3-用多文件组织多个类的程序
- 左侧伸缩式导航源码解析
- ubuntu12.04在桌面创建快捷方式
- 读取文件夹下的所有文件
- 手机短信验证+javase实现http Web请求