您的位置:首页 > 其它

LeetCode(55)Jump Game

2016-11-06 21:08 399 查看
题目:Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

For example:

A =
[2,3,1,1,4]
, return
true
.

A =
[3,2,1,0,4]
, return
false
.

解法:

贪心,能跳多远跳多远。从左到右遍历一遍数组,记下当前能跳到的最远距离。只要某个点在能跳的范围内且通过这一个点能跳到更远的距离,就更新最远距离。最后再判断最后一个点在不在能跳到的最远距离内。复杂度:O(n)。

代码:

class Solution {
public:
bool canJump(vector<int>& nums) {
int maxdis=0;//目前能跳到的最远距离
for(int i=0;i<nums.size()-1;i++)
{
if(i<=maxdis)//能跳到这一个点
{
maxdis=max(i+nums[i],maxdis);//如果通过这一点能够跳到更远,更新
}
}
if(maxdis>=nums.size()-1) return true;
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: