Jump Game II leetcode java

1612 ワード

タイトル:
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ああ、この問題もジャンプゲームもダイナミックプランニングの思想を利用しています.違いは、前の問題が維持したグローバルが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 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(maxcover19             
return 0;
20         
return step;
21     }