假DP 从前往后遍历每一个点,更新目前能跳到的最远的点
import java.util.*;
public class Solution {
public boolean canJump (int[] nums) {
int reach = 0; // 目前最远能跳到的点
for (int i = 0; i < nums.length; i++) {
// 之前的点都跳不到当前的点,所以失败
if (reach < i) return false;
// 已经能跳到最后一个点了,直接返回
if (reach >= nums.length-1) return true;
// 如果通过当前的点能够到更远的点,更新reach
reach = Math.max(reach, i + nums[i]);
}
return true;
}
}