您的位置:首页 > 其它

[leetcode][贪心] Jump Game

2015-05-15 22:29 351 查看
题目:

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
.

class Solution {
public:
//每个位置都有跳和不跳两种选择,根据什么做选择?哪种情况能到更远的位置?两种情况下能到的最远的位置各位多少?
//如果跳:i+nums[i]
//如果不跳:i之前的farestPosition
//什么时候返回true:在遍历完nums之前在某一位置farestPosition >= nums.size()-1
//什么时候返回false:当前位置小于该位置之前所能到达的最远位置
bool canJump(vector<int>& nums) {
if(nums.empty()) return true;
int farestPosition;
farestPosition = nums[0];
for(int i = 1; i < nums.size(); ++i){
if(i > farestPosition) return false;
farestPosition = i+nums[i] > farestPosition ? i+nums[i] : farestPosition;
if(farestPosition >= nums.size()-1) return true;//注意最后一个位置是<span style="font-family: Arial, Helvetica, sans-serif;">nums.size()-1而不是</span><span style="font-family: Arial, Helvetica, sans-serif;">nums.size()</span>
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: