跳跃游戏

链接

给定数组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));
        }
    }
}
posted @ 2021-10-18 15:45  Tianyiya  阅读(43)  评论(0)    收藏  举报