代码解决
class Solution {
public:
bool canJump(vector<int>& nums)
{
int cover = 0; // 初始化覆盖范围
if (nums.size() == 1) return true; // 如果数组长度为1,直接返回 true
// 遍历数组,直到当前覆盖范围
for (int i = 0; i <= cover; i++)
{
// 更新当前覆盖范围
cover = max(i + nums[i], cover);
// 如果覆盖范围达到或超过最后一个位置,返回 true
if (cover >= nums.size() - 1) return true;
}
// 如果遍历完所有位置仍不能到达最后一个位置,返回 false
return false;
}
};
核心思想
这个算法使用贪心算法的思路,通过遍历数组,每一步更新能到达的最远位置。如果能到达或超过数组的最后一个位置,则返回 true
,否则返回 false