public static int jump(int[] A) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        if(A==null||A.length<=1) return 0;
        int[] eachMinJump = new int[A.length];
        for(int i=0;i<eachMinJump.length;++i) eachMinJump[i] = Integer.MAX_VALUE;
        return jumpHelper(0, A, eachMinJump);
    }