public class Solution {
// 定义一个名为canJump的方法,用于判断是否能够从数组的起始位置跳到最后一个位置
public boolean canJump(int[] nums) {
// 获取数组的长度
int n = nums.length;
// 初始化最远可以到达的位置为0
int rightmost = 0;
// 遍历数组中的每个元素
for (int i = 0; i < n; ++i) {
// 如果当前索引i在最远可以到达的位置范围内
if (i <= rightmost) {
// 更新最远可以到达的位置为当前位置加上可以跳跃的最大步数与当前最远位置中较大的一个
rightmost = Math.max(rightmost, i + nums[i]);
// 如果更新后的最远位置大于或等于数组的最后一个索引,说明可以到达最后一个位置
if (rightmost >= n - 1) {
return true; // 返回true,表示可以跳到最后一个位置
}
}
}
// 如果遍历结束还没有到达最后一个位置,则返回false
return false;
}
}
例子:
[2, 3, 1, 1, 4]
- 我们一开始在位置 000,可以跳跃的最大长度为 222,因此最远可以到达的位置被更新为 222;
- 我们遍历到位置 111,由于 1≤21 \leq 21≤2,因此位置 111 可达。我们用 111 加上它可以跳跃的最大长度 333,将最远可以到达的位置更新为 444。由于 444 大于等于最后一个位置 444,因此我们直接返回 True。