public static int jump2(int[] A) {
    	if (null == A || 0 == A.length) return -1;
    	int len = A.length;
        int step = 0;
        int low = 0;
        int high = 0;
        if (1 == len) return 0;
        while(low <= high) {
            ++step;
            int last = high;
            for(int i = low; i <= last; ++i) {
                int ld = i + A[i];
                if (ld >= len-1)
                    return step;
                if (ld > high) {
                    high = ld;
                }
            }
            low = last + 1;
        }
        return step;
    }