https://oj.leetcode.com/problems/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
.
分析:这一题其实和之前Jump Game II 是类似的,在之前到达最近保存的一个最大可达范围之前,不停维护更新下一个最大可达范围,一旦到达现在的最大可达范围,就更新。 这里由于不需要计算最小步数,所以只需要不停维护当前的就可以了。一旦维护的值没有办法走到当前这个格子,就返回false,如果能够顺利走完,就返回true。 给出代码如下:
public boolean canJump(int[] A) {
int curnext = A[0];
for(int i = 1; i < A.length; i++){
if(curnext < i)
return false;
curnext = Math.max(curnext, A[i] + i);
}
return true;
}