闫氏dp,自己先想了个
但是会超时
所以 最终还是屈服了,看了一眼题解……
然后发现自己真的绕了一个大弯……
我一开始想的也是最简单的,后来想着要优化时间,结果脑子一抽越想越复杂了……
class Solution {
public:
int f[100000];
bool ans=false;
int ma=0;//存储当前能达到的最大格子处
bool canJump(vector<int>& nums){
if(nums.size()<2) return true;
int n=nums.size();
for(int i=0;i<n-1;i++){
f[i]=i+nums[i];
if(i==0&&f[i]==0) break;
if(f[i]>=n-1&&i<=ma){
ans=true;
break;
}
else if(i>ma) break;
ma=max(ma,f[i]);
}
return ans;
}
};