我的解法:
变量step记录当前位置元素可跳跃的最大距离,range记录当前元素可跳跃范围内全部元素可跳跃至的最大距离。只有range的覆盖到了数组最后一位元素,才表示可以到达最后一个下标。
可以省略变量step,直接取range = max(range, i + nums[i])
class Solution{
public:
bool canJump(vector<int>& nums){
if(nums.size() == 1) return true;
int step,range = nums[0];
for(int i = 1; i <= range; ++i){
step = i + nums[i];
range = max(range,step);
if(range >= nums.size() - 1){
return true;
}
}
return false;
}
};