给你一个非负整数数组 nums
,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true
;否则,返回 false
。
class Solution {
public:
bool canJump(vector<int>& nums) {
int A=1;
if(nums.size()==1)
{return true;}
for (int i=nums.size()-2;i>=0;i--){
if(nums[i]>=A)
{
A=1;
}
else
{
A++;
}
if(i==0&&A>1)
{
return false;
}
}
return true;
}
};
代码逻辑为从后往前不断遍历,直到发现走的路到0为止,且走过的路大于1,说明跳跃成功(其实是取巧了,因为只用输出bool类型,所以不用管中间是怎么走的,且可以直接跨过第一个)