链接:https://leetcode-cn.com/problems/friend-circles/
本来想用并查集写的,但感觉dfs还是简单点。创建一个集合标记已经访问过的人,然后挨个深度搜索访问没被访问过的人。注意count++的位置。
C++代码:
class Solution {
public:
int n;
set<int> s;
int findCircleNum(vector<vector<int>>& M) {
n = M.size();
int count = 0;
for(int i = 0;i<n;i++)
{
if(s.find(i) == end(s))
{
count++;
s.insert(i);
dfs(i, M);
}
}
return count;
}
void dfs (int num, vector<vector<int>>& M)
{
for(int i = 0;i<n;i++)
{
if(M[num][i]==1&&i!=num)
if(s.find(i) == end(s))
{
s.insert(i);
dfs(i, M);
}
}
}
};
本文介绍了一种使用深度优先搜索(DFS)算法解决LeetCode上的朋友圈圈子问题的方法。通过创建一个集合来标记已访问的人,并对每个人进行深度搜索以找到所有朋友,从而确定朋友圈的总数。代码示例采用C++实现。
826

被折叠的 条评论
为什么被折叠?



