https://leetcode.com/problems/friend-circles/description/
用图的邻接矩阵来表达社交关系,具有朋友关系归为同一个朋友圈(传递性),最后求朋友圈的数目,可用并查集的思路设计算法,算法设计原理可以看这一篇https://blog.csdn.net/to_be_to_thought/article/details/80726788。
public class FriendCircles {
public static int n=0;
public static int findCircleNum(int[][] M) {
n=M.length;
boolean[] visited=new boolean[n];
int ans=0;
for(int i=0;i<n;i++)
{
if(!visited[i])
{
ans++;
recursive(M,i,visited);
visited[i]=true;
}
}
return ans;
}
public static void recursive(int[][] M,int start,boolean[] visited)
{
for(int j=0;j<n;j++)
{
if(j==start)
continue;
if(M[start][j]==1 && !visited[j])
{
visited[j]=true;
recursive(M,j,visited);
}
}
return;
}
}