跳跃游戏
2015-08-19 23:12
232 查看
给出一个非负整数数组,你最初定位在数组的第一个位置。
数组中的每个元素代表你在那个位置可以跳跃的最大长度。
判断你是否能到达数组的最后一个位置。
样例
A = [2,3,1,1,4],返回 true.
A = [3,2,1,0,4],返回 false.
注意
这个问题有两个方法,一个是
我们手动设置小型数据集,使大家阔以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次。
数组中的每个元素代表你在那个位置可以跳跃的最大长度。
判断你是否能到达数组的最后一个位置。
样例
A = [2,3,1,1,4],返回 true.
A = [3,2,1,0,4],返回 false.
注意
这个问题有两个方法,一个是
贪心和
动态规划。
贪心方法时间复杂度为
O(N)。
动态规划方法的时间复杂度为
为O(n^2)。
我们手动设置小型数据集,使大家阔以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次。
class Solution { public: /** * @param A: A list of integers * @return: The boolean answer */ bool canJump(vector<int> A) { // write you code here int n = A.size(); int p = 0; while (p < n-1) { if (A[p] == 0) { return false; } int next = 0; int maxStep = 0; int i= p+1; if (p+A[p] >= n-1) { break; } for (; i <= p+A[p]; i++) { if (i+A[i] > maxStep) { maxStep = i + A[i]; next = i; } } p = next; } return true; } };
相关文章推荐
- POJ - 1679 The Unique MST(次小生成树)
- Spring-boot 学习笔记(1)
- 为何学霸、做不了Leader?(对于学渣来说,是治愈系哈哈)
- 剑指Offer面试题:5.重建二叉树
- NSString/NSMutableString/NSNumber/NSValue
- curl例子
- Java-Exception(异常)
- HDU2.2.4 Wolf and Rabbit
- HDOJ 2674 N!Again (同余定理)
- 数学之美
- 观察者模式(Observer)
- Android View的绘制流程
- eclipse中tomcat启动时项目重复加载,导致资源初始化两次的问题
- 创建curl
- 【译文】你真的会测试产品吗?如何做好产品测评
- POJ - 3687Labeling Balls(反向建图 + 反向拓扑)题意坑
- 装饰模式(Decorator)
- IOSButton自定义
- hdu 1875 畅通工程再续(kruskal || prim)
- C++对象模型——Template中的名称决议方式 (第七章)