跳跃游戏
给定数组arr,arr[i]k代表可以从位置向右跳1~k个距离。比如,arr[2]3,代表可以从位置2跳到位置3、位置4或位置5。如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。
import java.util.Scanner;
public class Main {
private static int solve(int[] arr) {
if (arr == null || arr.length == 0) {
return 0;
}
int ret = 0, currentStep = 0, nextStep = 0;
for (int i = 0; i < arr.length; ++i) {
if (currentStep < i) {
currentStep = nextStep;
ret++;
}
nextStep = Math.max(nextStep, i + arr[i]);
}
return ret;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; ++i) {
arr[i] = in.nextInt();
}
System.out.println(solve(arr));
}
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号