10.跳房子问题

2.问题分析

能不能跳到最后,直观的想法就是站在当前点看看能不能跳到终点,比如4,2,2,3,1从前到后依次便利就可以啦。但是这就涉及一个问题比如3,2,0,0 ,3,1,如果依次遍历的话,结果是可以到达终点,但是有个问题虽然倒数第二个3可以到达终点,但是没法到达倒数第二个3,换句话讲,就是3位置能跳动的距离为零,这样也就截止了。所以问题本质是判断你在当前点能运动的距离,如果为零就直接停止,而当前能运动的距离和之前的有关系,也与当下的值有关系。

3.代码

    bool canJump(int A[], int n) 
    {
        if(n<=1) return true;
        int max=-1;
        for(int i=0;i<n;i++)
        {
            if(A[i]>max) max=A[i];
            if(max==0) return false;
            if(max>=n-i-1 ) return true;
            max--;
            
        }
        return false;
    }

猜你喜欢

转载自blog.csdn.net/feng__shuai/article/details/81502951