Jump Game -- LeetCode
来源:互联网 发布:机械联结烙印矩阵 编辑:程序博客网 时间:2024/05/21 13:19
原题链接: http://oj.leetcode.com/problems/jump-game/
这道题是动态规划的题目,所用到的方法跟是在Maximum Subarray中介绍的套路,用“局部最优和全局最优解法”。我们维护一个到目前为止能跳到的最远距离,以及从当前一步出发能跳到的最远距离。局部最优local=A[i]+i,而全局最优则是global=Math.max(global, local)。递推式出来了,代码就比较容易实现了。因为只需要一次遍历时间复杂度是O(n),而空间上是O(1)。代码如下:
这道题是动态规划的题目,所用到的方法跟是在Maximum Subarray中介绍的套路,用“局部最优和全局最优解法”。我们维护一个到目前为止能跳到的最远距离,以及从当前一步出发能跳到的最远距离。局部最优local=A[i]+i,而全局最优则是global=Math.max(global, local)。递推式出来了,代码就比较容易实现了。因为只需要一次遍历时间复杂度是O(n),而空间上是O(1)。代码如下:
public boolean canJump(int[] A) { if(A==null || A.length==0) return false; int reach = 0; for(int i=0;i<=reach&&i<A.length;i++) { reach = Math.max(A[i]+i,reach); } if(reach<A.length-1) return false; return true;}这也是一道比较经典的动态规划的题目,不过不同的切入点可能会得到不同复杂度的算法,比如如果维护的历史信息是某一步是否能够到达,那么每一次需要维护当前变量的时候就需要遍历前面的所有元素,那么总的时间复杂度就会是O(n^2)。所以同样是动态规划,有时候也会有不同的角度,不同效率的解法。这道题目还有一个扩展Jump Game II,有兴趣的朋友可以看看。
63 2
- LeetCode Jump Game && Jump GameII
- [LeetCode]Jump Game II、Jump Game
- 【LeetCode】Jump Game & Jump Game II
- leetcode Jump Game & Jump Game II
- leetcode之Jump Game && Jump Game II
- [leetcode]Jump Game &&Jump Game II
- 【LeetCode】Jump Game && Jump Game II
- [Leetcode]Jump Game && Jump Game II
- Leetcode之Jump Game & Jump Game II
- Jump Game 和Jump Game II---LeetCode
- LeetCode-Jump Game & Jump Game II
- 【Leetcode】【python】Jump Game/Jump Game II
- LeetCode: Jump Game
- LeetCode: Jump Game II
- LeetCode Jump Game
- LeetCode Jump Game II
- LeetCode : Jump Game
- LeetCode: Jump Game II
- Codeforces Round #236 (Div. 2)__Trees in a Row
- 黑马程序员——枚举
- 使用 focus() 和 blur()
- 向超链接添加快捷键
- 英雄会第四届在线编程大赛·线上初赛:带通配符的数
- Jump Game -- LeetCode
- codeforces#236_div2_A nuts 贪心
- Java方法的可变参数类型
- Python中的random模块
- CDZSC_2014上半年组队赛(2)
- codeforces#236_div2_B Trees in a Row
- 学Java和找女朋友
- 002_023 Python 跨平台读取无缓存字符
- 2012年蓝桥杯预赛题-取球游戏