给你一个非负整数数组 nums
,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true
;否则,返回 false
。
解法:按顺序跑就可以了,用一个变量len来记录当前已经可以跑的长度,当出现某个下标i>len,说明第i个点没法跑到,就返回 false就可以了,能把n个点都跑完,就返回true
class Solution {
public:
bool canJump(vector<int>& nums) {
if(nums.size()==1)return true;
int len=0;
for(int i=0;i<nums.size();i++)
{
if(i>len)return false;
len=max(len,i+nums[i]); //判断上次的某个点能跑的长度大还是当前的i点+i点能跑的距离大
}
return true;
}
};