一、问题描述
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:
bool canJump(vector<int>& nums) {
int length = nums.size();
int max = nums[0];
for (int i = 1; i <length; i++) {
if (max <= 0) {
return false;
} else {
--max;
if (max < nums[i]) {
max = nums[i];
}
}
}
return true;
}
};