Array Hopper II
public class Solution {
// front to back
// public int minJump(int[] array) {
// int length = array.length;
// int[] minJump = new int[length];
// minJump[0] = 0;
// for (int i = 1; i < length; i++){
// minJump[i] = -1;
// for (int j = i - 1; j >= 0; j--){
// if (j + array[j] >= i && minJump[j] != -1){
// if (minJump[i] == -1 || minJump[i] > minJump[j] + 1){
// minJump[i] = minJump[j] + 1;
// }
// }
// }
// }
// return minJump[length - 1];
// }
public int minJump(int[] array){
int len = array.length;
int[] M = new int[len];
M[len - 1] = 0;
for (int i = len - 2; i >= 0; i--){
int maxJumps = array[i];
int min = Integer.MAX_VALUE;
for(int j = 1; j <= maxJumps; j++){
if (i + j >= len) break;
min = Math.min(min, M[i + j]);
}
M[i] = min == Integer.MAX_VALUE ? Integer.MAX_VALUE : min + 1;
}
return M[0] == Integer.MAX_VALUE ? -1 : M[0];
}
}
Last updated