public static int jump(int[] A) {
    	if (null == A || 0 == A.length) return -1; 
    	int len = A.length;
    	int[] step = new int[len];
    	step[len - 1] = 0;
    	for (int i = len - 2; i >= 0; i--) {
    		int min = len + 1;
    		for (int j = i + 1; j <= i + A[i] && j < len; j++) {
    			if (min > 1 + step[j]) {
    				min = 1 + step[j];
    			}
    		}
    		step[i] = min;
    	}
        return step[0];
    }