有jump game 2 http://oj.leetcode.com/problems/jump-game-ii/ 比简单多了,只是需要考虑用最小的步数就行了,找到结果尽快返回,也就是优化。我的思想是:设置一个能达到的最远点,首先判断当前点能不能到达,然后看能都更新最远点,如果最远点超过了最后的索引,直接返回真。如下:
bool canJump(int A[], int n) {
if (n==0)
{
return true;
}
int farestjump = A[0];
for (int i=1;i<n;i++)
{
if (i>farestjump)
{
return false;
}
if (i+A[i]>farestjump)
{
farestjump = i + A[i];
}
if (farestjump>=n-1)
{
break;
}
}
return true;
}