题目:
55. Jump Game
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 n = nums.size();
int reach = 0;
for(int i = 0; i < n, i <= reach; i++) {
reach = max(nums[i] + i, reach);
if (reach >= n - 1) {
return true;
}
}
return false;
}
};
算法:
基本思路是要能到达最终状态,必定可以到达最后状态的前一个状态。由动态规划可知,即列表中的所有状态都可以达到。循环记录当前可到达的最远状态,无法到最终状态则返回false。