题意:
给你一个只含非负整数的数组,每个元素代表最大弹跳值,问你能不能跳到最后一个元素。
思路:
对每个0元素特判,如果之前能跳的最大距离小于等于当前位置则返回false;
优化:
当maxx已经超过最后一个元素的位置时,返回true;
代码:
class Solution {
public:
bool canJump(vector<int>& nums) {
int n =nums.size();
int maxx = 0;
for(int i = 0;i<n-1;i++)
{
if(nums[i]==0)
{
if(maxx<=i)
return false;
}
else
{
maxx = max(maxx,nums[i]+i);
if(maxx>=n-1)
return true;
}
}
return true;
}
};