题解 | #几步可以从头跳到尾#
几步可以从头跳到尾
http://www.nowcoder.com/practice/de62bcee9f9a4881ac80cce6da42b135
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 最少需要跳跃几次能跳到末尾
* @param n int整型 数组A的长度
* @param A int整型一维数组 数组A
* @return int整型
*/
public int Jump (int n, int[] A) {
// write code here
int[] jump = new int[n];
for (int i = 0; i < n; i++) {
jump[i] = i + A[i];
}
int index = 0;
int res = 0; // 定义一个整型变量,用于存放最终的返回结果
while (index < n - 1) {
int accessible = jump[index]; // 当前位置可达的最远距离
if (accessible >= n - 1) {
res++;
break;
}
index = findMax(jump, index + 1, accessible);
res++;
}
return res;
}
public int findMax(int[] jump, int start, int end) {
int max = start; // 表示的是下标
for (int i = start; i <= end; i++) {
if (jump[i] > jump[max]) {
max = i;
}
}
return max;
}
}