Jump Game II leetcode java

題目:spa

Given an array of non-negative integers, you are initially positioned at the first index of the array. .net

Each element in the array represents your maximum jump length at that position. code

Your goal is to reach the last index in the minimum number of jumps. blog

For example:
Given array A = [2,3,1,1,4] element

The minimum number of jumps to reach the last index is 2. (Jump 1 step from index 0 to 1, then 3 steps to the last index.) it

 

題解:io

 參考了http://blog.csdn.net/linhuanmars/article/details/21356187,這道題和Jump Game都是利用動態規劃的思想。區別是,上一道題維護的全局最優是maxcover,一旦maxcover大於總長度,那麼說明能跳到結尾。
ast

而這道題除了維護maxcover外,還須要考慮維護最小步數,最小步數的維護靠maxcover做爲每一步能跳的長度,代碼以下:class

 1  public  int jump( int[] A) {
 2          if(A== null||A.length==0)
 3              return 0;
 4         
 5          int maxcover = 0;
 6          int step = 0;
 7          int lastcover = 0;
 8          for( int i = 0; i<=maxcover&&i<A.length;i++){
 9              if(i>lastcover){
10                 step++;
11                 lastcover = maxcover;
12             }
13             
14              if(A[i]+i>maxcover)
15                 maxcover = A[i]+i;
16         }
17         
18          if(maxcover<A.length-1)
19              return 0;
20          return step;
21     }
相關文章
相關標籤/搜索