首页 > 其他 > 详细

55. Jump Game

时间:2016-03-04 07:05:46      阅读:182      评论:0      收藏:0      [点我收藏+]

思路:

对于数列里的每一个数,从头到尾扫一遍,每一个位置上的数能够达到最远的地方,就是这个位置加上这个位置可以走的最远的位置。

再维持一个目前为止的最大值,如果目前的位置已经超过了曾经有过的最大的值,那么就结束,返回false。

如果全局的最大值已经能够达到数列的末尾,那么就返回true。

 

 1     public boolean canJump(int[] nums) {
 2         if(nums == null || nums.length == 0) {
 3             return false;
 4         }
 5         if(nums.length == 1) {
 6             return true;
 7         }
 8         int[] res = new int[nums.length];
 9         res[0] = nums[0];
10         int max = nums[0];
11         for(int i = 1; i < nums.length; i++) {
12             if(i > max) {
13                 break;
14             }
15             res[i] = nums[i] + i;
16             max = Math.max(res[i], max);
17             if(max >= nums.length - 1) {
18                 return true;
19             }
20         }
21         return false;
22     }

 

55. Jump Game

原文:http://www.cnblogs.com/warmland/p/5240761.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!