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