Jump Game -- LeetCode
2014-03-20 09:54
211 查看
原题链接: http://oj.leetcode.com/problems/jump-game/
这道题是动态规划的题目,所用到的方法跟是在Maximum
Subarray中介绍的套路,用“局部最优和全局最优解法”。我们维护一个到目前为止能跳到的最远距离,以及从当前一步出发能跳到的最远距离。局部最优local=A[i]+i,而全局最优则是global=Math.max(global,
local)。递推式出来了,代码就比较容易实现了。因为只需要一次遍历时间复杂度是O(n),而空间上是O(1)。代码如下:
Game II,有兴趣的朋友可以看看。
这道题是动态规划的题目,所用到的方法跟是在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,有兴趣的朋友可以看看。
相关文章推荐
- 动态规划小结 - 一维动态规划 - 时间复杂度 O(n),题 [LeetCode] Jump Game,Decode Ways
- leetcode[55]Jump Game
- [LeetCode] 55. Jump Game
- Leetcode题解-55. Jump Game
- leetcode Jump Game ||
- 算法分析与设计课程(9):【leetcode】Jump Game
- [Leetcode] Jump Game
- LeetCode 55 - Jump Game
- [leetcode.com]算法题目 - Jump Game
- Leetcode:Jump Game
- leetcode 刷题之路 54 Jump Game
- LeetCode: Jump Game
- [LeetCode]题解(python):055-Jump Game
- LeetCode (Jump Game)
- leetcode55. Jump Game (贪心)
- LeetCode 055 Jump Game
- Leetcode--jump game (最大跳)
- 【Leetcode】Jump Game (DP)
- [leetcode]Jump Game
- [C++]LeetCode: 103 Jump Game (局部最优和全局最优法)