class Solution {
public:
bool canJump(vector<int>& nums) {
int mypower = nums[0]; // 当前还能跳多少步
for (int i = 1; i < nums.size(); i++) {
mypower--; // 走到下一格,消耗一步
if (mypower < 0) return false; // 没能量了,走不到这里
if (nums[i] > mypower) {
mypower = nums[i]; // 当前格子能跳更远,更新能量
}
}
return mypower >= 0; // 能走到这里,说明可以到终点
}
};
总结
核心就是维护一个 mypower:
-
每往前走一格 →
mypower-- -
如果小于 0 → 说明走不到当前位置,返回
false -
到达当前位置后 → 看
nums[i]能不能提供更多跳跃能力 -
遍历结束 → 说明成功到达终点,返回
true
一句话记忆:
先消耗一步,再捡当前格子的更大能量。