55. Jump Game

A = [2,3,1,1,4], return true.

A = [3,2,1,0,4], return false.

遍历记录下当前能到达的最远的位置,如果能到达n,则一定能达到 如果当前能到达的位置小于当前的下标,则说明走不下去了,提前中断退出。
第一个点时起点,一定可以达到,先加入进去。
遍历完成之后,看能到达的位置是否覆盖了末节点的位置。

#define max(a,b) (a>b?a:b)
bool canJump(int* nums, int numsSize) {
    int i = 0;
    int reach = 0;
    for(; i < numsSize ; i++){
        if(reach < i)
            break;
        reach = max(i+nums[i], reach);
    }
    
    return reach >= numsSize-1;
    
}

你可能感兴趣的:(55. Jump Game)