题目:题目链接
和45. Jump Game II这题有点不一样,这题是判断能否到达。思路是差不多的,都是要知道最大可覆盖范围。可以参考45. Jump Game II。
可以稍微改进一下,因为只需要判断,不需要步数就不需要按照步数来确定当前最大覆盖范围,只需要一个变量然后动态更新最大覆盖范围就可以了。看代码吧:
class Solution {
public:
bool canJump(vector<int>& nums) {
if(nums.size() == 1) return true;
int reach = 0;
for(int i = 0;i<nums.size();++i){
if(reach == i && nums[i] == 0) return false;//走不动了。
reach = max(reach,i+nums[i]);//动态维护当前最大覆盖范围
if(reach >= nums.size()-1) return true;
}
return false;
}
};