Leetcode-547. Friend Circles

https://leetcode.com/problems/friend-circles/description/

用图的邻接矩阵来表达社交关系,具有朋友关系归为同一个朋友圈(传递性),最后求朋友圈的数目,可用并查集的思路设计算法。

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;
	}
}

猜你喜欢

转载自blog.csdn.net/To_be_to_thought/article/details/80726735