您的位置:首页 > 其它

LintCode : 跳跃游戏

2016-12-04 15:46 746 查看


跳跃游戏

 描述
 笔记
 数据
 评测

给出一个非负整数数组,你最初定位在数组的第一个位置。   
数组中的每个元素代表你在那个位置可以跳跃的最大长度。    
判断你是否能到达数组的最后一个位置。


 注意事项


这个问题有两个方法,一个是
贪心
和 
动态规划

贪心
方法时间复杂度为
O(N)

动态规划
方法的时间复杂度为
为O(n^2)

我们手动设置小型数据集,使大家阔以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次。

您在真实的面试中是否遇到过这个题? 

Yes

样例

A = [2,3,1,1,4],返回
true.
A = [3,2,1,0,4],返回
false.

标签 

相关题目 

贪心算法
维护一个right (表示右边能跳到的最远的点),从左往右扫描,根据当前可跳的步骤不断更新right ,当right到达终点,即可返回true. 若更新完right后,right未
          动,并且index = right,而且这时没到达终点,代表我们不可能到达终点了。(当前index的可跳值应该是0)

/**
* @param A:
* A list of integers
* @return: The boolean answer
*/
public boolean canJump(int[] A) {
// wirte your code here
if (A == null || A.length == 0) {
return false;
}
int right = Integer.MIN_VALUE;
for (int i = 0; i < A.length; i++) {
right = Math.max(right, i + A[i]);
if (right == A.length - 1) {
return true;
}
if (i == right) {
return false;
}
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LintCode 贪心算法