经过测试,两种写法耗时差距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);}
};