jump game

1。第一次觉得很简单,但是超时了

 1 public class Solution {

 2     public boolean canJump(int[] A) {

 3         

 4         int len=A.length;

 5         boolean b[]=new boolean[len];

 6         b[0]=true;

 7         for(int i=1;i<len&&i<=A[0];i++) b[i]=true;

 8         

 9         for(int j=1;j<len;j++)

10         {

11             if(b[j])

12             {

13                 int i;

14                 for( i=1;j+i<len&&i<=A[j];i++)

15                 {

16                     b[j+i]=true;

17                 }

18                 if(j+i==len) return b[len-1];

19                 

20                 

21             }

22             

23             

24         }

25         return b[len-1];

26             

27         }

28         

29    

30 }
View Code

2.看了别人的思路,很牛,改进上述思想就是其实没必要a[i]后a[i]个数设为1,记住后面最大的范围就行。,

 

 1 public class Solution {

 2     public boolean canJump(int[] A) {

 3         

 4         

 5         int len=A.length;

 6         if(len==1&&A[0]==0) return true;

 7       int max=A[0];

 8       int i=1;

 9         while(i<len-1)

10         {

11             if(max<=0) return false;

12             

13             max=Math.max(A[i],max-1);

14             i++;

15             if(max<=0) return false;

16             

17             

18         }

19        

20        if(max>=1) return true;

21         return false;

22         

23             

24         }

25         

26    

27 }
View Code

3.我后来想还是0的原因导致最后到不了尾巴,0的宽度就是一条沟,前面一直在积蓄力量。就是最大能跳的长度。跳过了积蓄,跳不过失败。

4.参考最简洁的代码http://www.cnblogs.com/remlostime/archive/2012/11/12/2765894.html(没仔细琢磨,把几个情况统一了)

 1 public class Solution {

 2     public boolean canJump(int[] A) {

 3         

 4         

 5         int len=A.length;

 6         int max=A[0];

 7         for(int i=1;i<len;i++)

 8         {

 9             if(max>0)

10             {

11                 

12             max=Math.max(A[i],max-1);

13             }

14             else return false;

15         }

16             

17             return true;

18       

19             

20         

21  

22        

23         }

24         

25    

26 }

 

 

你可能感兴趣的:(game)