Jump Game

来源:互联网 发布:知达常青藤中学校官网 编辑:程序博客网 时间:2024/06/05 17:50
class Solution {public:    bool canJump(int A[], int n) {        int index=0;        int beforeLimit=index+A[index];        if(beforeLimit>=(n-1))        {            return true;        }        index++;        while(index<n)        {            if(index>beforeLimit)            {                return false;            }            int curLimit=index+A[index];            if(curLimit>=beforeLimit)            {                beforeLimit=curLimit;            }            if(beforeLimit>=(n-1))            {                return true;            }            index++;        }        return false;    }};

基本思路是维持一个当前已经考虑过的元素所能到达的最远位置beforeLimit,如果最远位置已经不小于n-1,那么可以到达数组的最后一个位置;如果考虑完所有元素后仍然不能到达最后一个位置,则返回false。在考虑一个新的元素时,要注意看其下标是否位于beforeLimit内,如果不位于其内,那么不能到达当前所考虑新元素的位置

0 0
原创粉丝点击