题目: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.
思路:使用Greedy Algorithm,每往后移动一个单位都要做一次判断,更新reach所能达到的最大值,最后只需要判断i==n即可。代码实现如下:
class Solution {
public:
bool canJump(vector<int>& nums) {
int i, reach, n = nums.size();
for (i=0, reach=0; i < n && i <= reach; i++) {
reach = max(i+nums[i], reach);
}
return i==n;
}
};