class Solution {
public boolean canJump(int[] nums) {
int n = nums.length;
int rightmost = 0;
for(int i = 0; i < n; i++){//每循环到一个点,边界就更新一次
if(i <= rightmost){//在能到达的范围之内,不然就是耍流氓[121011]
rightmost = Math.max(rightmost, nums[i] + i);//判断边界是否要更新
if(rightmost >= n-1) return true;//最后一个点为n-1
}
}
return false;
}
}
归纳:
每一次循环,都会更新一次边界,这个边界表示能到达的最大的距离
注意i <= rightmost,因为不能到达的点求Math.max是没有意义的