Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.


Greedy Algorithm的题目。


1. 初始化一个step为数组的第一个元素+1. 之所以要加1,是因为扫描的时候也从第一个元素开始扫描。

2. 从第一个元素开始扫描:

2.1 如果当前元素是最后一个,返回true

2.2 step--

2.3 比较step和当前元素的值,取最大的赋给step

2.4 如果step为0直接返回false

3. 扫描结束,返回true。 实际上执行不到。


public boolean canJump(int[] A) {
    // greedy algorithm
    int step = A[0] + 1;
    for (int i = 0; i < A.length; i++) {
        if (i == A.length - 1) {
            return true;
        }
        step--;
        if (A[i] > step) {
            step = A[i];
        }
        if (step == 0) {
            return false;
        }
    }
    return true;
}