1.题目
给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。
A = [2,3,1,1,4],返回 true.
A = [3,2,1,0,4],返回 false.
2.算法
我们维护两个变量,一个是从前一步出发能够到达的最远距离,一个是从当前出发能够到达的最远距离
public boolean canJump(int[] a)
{
// wirte your code here
if (a == null || a.length == 0)
{
return false;
}
int reach = 0;
for (int i = 0; i < a.length && i <= reach; i++)
{
reach = Math.max(i + a[i], reach);
}
if (reach < a.length - 1)
{
return false;
}
return true;
}
原文连接