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