注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
以下是我找到的答案,而且读懂了这个做法的意思- <div>int findCircleNum(vector<vector<int>>& isConnected):
- </div><div> unordered_map<int, unordered_set<int>> g; int cnt=0;
- </div><div> for(i=0<isConnected.size()) for(j=0<isConnected[i].size()){
- </div><div> if(isConnected[i][j]){ g[i].insert(j); g[j].insert(i); }
- </div><div> unordered_set<int> visited;
- </div><div> for(auto c : g):
- </div><div> if(visited.count(c.first)) continue;
- </div><div> cnt++;
- </div><div> DFS(g, c.first, visited);
- </div><div> return cnt;</div>
复制代码- void DFS(unmap<int, unordered_set<int>>& g, int i, unset<int>& visited){
- <div></div><div> visited.insert(i);
- </div><div> for(auto j : g[i]){
- </div><div> if(visited.count(j)) continue;
- </div><div> DFS(g, j, visited);
- </div><div> }
- </div><div> }</div>
复制代码 我在网上查了一下,时间复杂度是O(n^2) 而空间复杂度似乎是O(n)。由于我的基础很差,不太明白这样的DFS算法是如何分析复杂度的,所以还请各位老师指点迷津啊~
|