The description of the question tells us: If one index cannot be reached, all the latter indexes cannot be reached. Since of that, what should be done is very simple, track the max index you can reach.

```
public boolean canJump(int[] nums) {
if (nums == null || nums.length == 0) return false;
int maxReach = nums[0];
for (int i = 1; i < nums.length; i++) {
if ( i > maxReach ) return false;
maxReach = Math.max(maxReach, i + nums[i]);
}
return true;
}
```