给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

class Solution {
public boolean canJump(int[] nums) {
int n = nums.length;
int rightmost = 0; //当前可到达的最远的下标,初始为0
for ( int i = 0; i < n; i++ ) {
if ( i <= rightmost ) { // 当前位置在远下标之内
rightmost = Math.max(rightmost, i + nums[i]); // 更新可到达的最远下标
if (rightmost >= n – 1 ) { // 如果最远已经覆盖 直接返回
return true;
}
}
}
return false;
}
}



![P11246 [GESP202409 六级] 小杨和整数拆分-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108100631-6af049a75855c-220x150.png)
![打卡信奥刷题(3678)用C++实现信奥题 P12274 [蓝桥杯 2024 国 Python B] 设计-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108053830-6af00ad6bdf8d-220x150.png)

