547. 朋友圈
难度:中等
类似题目:990. 等式方程的可满足性
题目描述
解题思路
1、并查集
还是因为今天每日一题写了并查集,所以就顺便去找了一点并查集的题目来做,这道题可以直接用上道题判断等式是否成立的那个并查集类,最后遍历统计存在几个根就可以了
public int findCircleNum(int[][] M) {
int n = M.length;
UnionFind uf = new UnionFind(n);
//合并所有的朋友关系
for (int i = 0; i < n; i++) {
for (int j = 0; j < i+1; j++) {
if(M[i][j] == 1) {
//如果i和j有朋友关系,合并
uf.union(i, j);
}
}
}
HashSet<Integer> hashSet = new HashSet<>();
int count = 0;
for (int i = 0; i < n; i++) {
int root = uf.find(i);
if(!hashSet.contains(root)) {
hashSet.add(root);
count++;
}
}
return count;