leetcode jump game I&&II

jump game

class Solution {
public:
    bool canJump(int A[], int n) 
    {
        int maxi;
        maxi=A[0];
        for(int i=1;i<n-1;i++)
        {
           if(maxi<i)return false;
           if(i+A[i]>maxi)
           {
               maxi=i+A[i];
           }
        }
        if(maxi>=n-1)return true;
        else return false;        
    }
};

 jump game II

class Solution { 
public: 
    int jump(int A[], int n)  
    { 
        int *step=new int[n];
        memset(step,0,sizeof(step));
        int lasti=0,maxreach=A[0],reachindex;  
        for(int i=1;i<n;i++) 
        { 
           if(lasti+A[lasti]>=i)
           {
              step[i]=step[lasti]+1;
           }
           else
           {
               step[i]=step[reachindex]+1;
               lasti=reachindex;
           }
           if(i+A[i]>maxreach) 
           { 
              maxreach=i+A[i]; 
              reachindex=i;             
           } 
        } 
        return step[n-1];        
    } 
}; 

 

posted @ 2013-05-23 16:34  代码改变未来  阅读(401)  评论(0编辑  收藏  举报