经过测试,两种写法耗时差距10倍,我也不知道原因是啥
用访问次数的是更快的
class Solution {
public:
int n;
bool dfs(vector<int>& arr, int start, vector<int>& visited){
if(start<0||start>=n || visited[start]==1)
return false;
visited[start]++;
if(arr[start]==0)
return true;
return dfs(arr,start+arr[start],visited)||dfs(arr,start-arr[start],visited);
}
bool canReach(vector<int>& arr, int start) {
n=arr.size();
vector<int>visited(n,0);
return dfs(arr, start, visited);
}
};
是否访问过是更慢的
class Solution {
public:
int n;
bool dfs(vector<int>& arr, int start, vector<bool>& visited){
if(start<0||start>=n || visited[start])
return false;
visited[start]=true;
if(arr[start]==0)
return true;
return dfs(arr,start+arr[start],visited)||dfs(arr,start-arr[start],visited);
}
bool canReach(vector<int>& arr, int start) {
n=arr.size();
vector<bool>visited(n,false);
return dfs(arr, start, visited);
}
};