题解 | 跳跃游戏(二)

跳跃游戏(二)

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();
    }
    
}

贪心+倒推

全部评论

相关推荐

03-11 21:46
西北大学 Java
河和静子:这只是实习工资,我学长北大通班博一的,他同学被这家天天发邮件让他去实习,一个月10w
点赞 评论 收藏
分享
04-18 00:32
已编辑
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务