首页 > 其他 > 详细

LeetCode Jump Game

时间:2015-09-24 07:01:41      阅读:157      评论:0      收藏:0      [点我收藏+]

原题链接在这里:https://leetcode.com/problems/jump-game/

维护一个当前能跳到的最大值maxJump, 若是maxJump 已经>=nums.length-1, 说明能跳到最后一个点,return true.

若是过程中maxJump <= i, 说明跳到当前点便不能往前,跳出loop, return false.

AC Java:

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

 下面的Method 2 更加模板化,方便于Jump Game II的操作。maxJump同样是需要维护的能跳到的最大值,每当 i 大于maxJump时就说明脱节了,

maxJump到不了i 不对maxJump做进一步更新。

loop后面检查maxJump 有没有到 最后一个元素,所示没到,就返回false, 到了就返回 true.

AC Java:

 1 public class Solution {
 2     public boolean canJump(int[] nums) {
 3         if(nums == null || nums.length == 0){
 4             return false;
 5         }
 6         int maxJump = 0;
 7         for(int i = 0; i<nums.length && i<=maxJump; i++){
 8             maxJump = Math.max(maxJump, i+ nums[i]);
 9         }
10         return maxJump<nums.length-1 ? false:true;
11     }
12 }

 

LeetCode Jump Game

原文:http://www.cnblogs.com/Dylan-Java-NYC/p/4834075.html

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