Jump Game II leetcode java


題目:

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

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

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

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

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.)

 

題解:

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

而這道題除了維護maxcover外,還需要考慮維護最小步數,最小步數的維護靠maxcover作為每一步能跳的長度,代碼如下:

 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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM