题解 | 跳跃游戏(二)
跳跃游戏(二)
https://www.nowcoder.com/practice/58e31b785f4b4ced9695dd4fcd60c1ce
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
in.nextLine();
String line = in.nextLine();
String[] str = line.split(" ");
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(str[i]);
}
if (n == 1) {
System.out.println(nums[0]); // 如果只有一个元素,直接输出
in.close();
return;
}
int score = nums[n - 1];
int maxIndex = n - 1;
//从倒数第二个位置向前遍历
for(int i = n - 2; i >= 0; i--) {
if(i + nums[i] >= maxIndex) {//如果可以从 i 跳到maxIndex
score += nums[i];
maxIndex = i;
}
}
// 判断是否到达起点
int res = maxIndex == 0 ? score : -1;
System.out.println(res); // 如果只有一个元素,直接输出
in.close();
}
}
贪心+倒推
