该题来自力扣
太久没写算法题目了,连bfs模板都忘了
这道题看着就知道是一个图的遍历,相同的不用在遍历,很容联想到bfs和dfs
bfs
class Solution { public: int findCircleNum(vector<vector<int>>& isConnected) { queue<int> q; vector<int> visited(isConnected.size()); int number=0; for(int i=0;i<isConnected.size();i++) { if(!visited[i]) { q.push(i); while(!q.empty()) { int j=q.front(); q.pop(); visited[j]=1; for(int k=0;k<isConnected[i].size();k++) { if(isConnected[j][k]==1&&visited[k]==0) { q.push(k); } } } number++; } } return number; } };
其实这个也相当于是个并查集,只不过太久没写算法了,刚开始只是看着眼熟,后面看了题解,发现并查集。