118
社区成员




for (int i = 0; i < nums.length; i++)
:这个循环遍历数组中的每一个位置。
if (i > reach)
:如果当前遍历到的位置 i
超过了所能达到的最远位置 reach
,这意味着无法从之前的位置跳跃到当前位置,也就不可能到达最后一个下标,所以直接返回 false
。
reach = Math.max(reach, i + nums[i])
:这一步更新 reach
的值。i + nums[i]
表示从当前位置 i
出发,能够跳跃到的最远位置。通过 Math.max
函数,将当前的 reach
值和 i + nums[i]
进行比较,取较大值作为新的 reach
。这样可以不断更新从起始位置出发能够到达的最远位置。
class Solution {
public boolean canJump(int[] nums) {
int reach = 0;
for (int i = 0; i < nums.length; i++) {
if (i > reach) {
return false;
}
reach = Math.max(reach, i + nums[i]);
}
return reach >= nums.length - 1;
}
}