class Solution {
bool f=false;
public:
bool canJump(vector<int>& nums) {
if(nums.size()==1)
return true;
bool u;
u=check(0,nums[0],nums);
return f;
}
bool check(int ad,int ti,vector<int>&nums){
cout<<"执行了位置在"<<ad<<endl;
int s=nums.size();
for(int i=1;i<=ti;i++){
if(ad+i==s-1){
cout<<"jj";
f=true;
return true;
}
f=check(ad+i,nums[ad+i],nums);
cout<<"kk"<<endl;
}
return f;
}
};
递归遍历,果然超时
但是吧,有没有懂的老哥,可以强制停止这个递归函数执行吗?这样倒可以减少时间
看了题解,被自己蠢笑了,到下一个点不断更新最长点就行
class Solution {
bool f = false;
public:
bool canJump(vector<int>& nums) {
int k = 0;
for (int i = 0; i < nums.size(); i++) {
if(i>k) return false;
k =max(k,i+nums[i]);
}
return true;
}
};