Description
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.
Example
For example:
A = [2,3,1,1,4], return true.
A = [3,2,1,0,4], return false.
思路
- 每一次选择跳到下一个能跳到最远的位置,如果某一次不跳了,说明不能跳到数组末尾,返回false.
代码
class Solution {
public:
bool canJump(vector<int>& nums) {
int len = nums.size();
if(len == 0) return false;
int i = 0, max_flag = 0, max_value = nums[0];
while(i < len){
max_flag = -1;
for(int j = i; j <= i + nums[i] && j < len; ++j){
if(j + nums[j] > max_value){
max_value = j + nums[j];
max_flag = j;
}
if(max_value >= len - 1)
return true;
}
if(max_flag == -1) break;
else i = max_flag;
}
return false;
}
};