标签:通过 数据 合并 路径 bsp http nec bubuko 时空
2018-05-01 15:13:08
并查集是一个时空复杂度非常优越的数据结构,并且通过优化后其复杂度为<O(1),O(n)>。
并查集的优化主要有两个方面:
路径压缩:
按rank合并:
public class UnionFindSet { private int[] parent; private int[] rank; public UnionFindSet(int n) { parent = new int[n + 1]; rank = new int[n + 1]; for (int i = 0; i < n + 1; i++) { parent[i] = i; rank[i] = 1; } } public int find(int i) { if (parent[i] != i) parent[i] = find(parent[i]); return parent[i]; } public boolean union(int i, int j) { int pi = find(i); int pj = find(j); if (pi == pj) return false; if (rank[pi] > rank[pj]) parent[pj] = pi; else if (rank[pi] < rank[pj]) parent[pi] = pj; else { parent[pj] = pi; rank[pi]++; } return true; } }
684. Redundant Connection
问题描述:
问题求解:
树形下的无向图判断环路问题,图的描述方式是采用边集。
并查集本身就是树形结构,而树是一个无向图,具体来说,树是一个无环的连通图,所以本题可以直接使用并查集来进行求解。
public int[] findRedundantConnection(int[][] edges) { UnionFindSet ufs = new UnionFindSet(edges.length + 1); int[] res = new int[2]; for (int[] pair : edges) { if (!ufs.union(pair[0], pair[1])) { res[0] = Math.min(pair[0], pair[1]); res[1] = Math.max(pair[0], pair[1]); break; } } return res; }
547. Friend Circles
问题描述:
问题求解:
class Solution { public int findCircleNum(int[][] M) { UnionFindSet ufs = new UnionFindSet(M.length); int res = 0; for (int i = 0; i < M.length; i++) { for (int j = 0; j < i; j++) { if (M[i][j] == 1) ufs.union(i, j); } } for (int i = 0; i < ufs.parent.length; i++) if (ufs.parent[i] == i) res++; return res; } } class UnionFindSet { public int[] parent; private int[] rank; public UnionFindSet(int n) { parent = new int[n]; rank = new int[n]; for (int i = 0; i < n; i++) { parent[i] = i; rank[i] = 1; } } public int find(int i) { if (parent[i] != i) parent[i] = find(parent[i]); return parent[i]; } public boolean union(int i, int j) { int pi = find(i); int pj = find(j); if (pi == pj) return false; if (rank[pi] > rank[pj]) parent[pj] = pi; else if (rank[pi] < rank[pj]) parent[pi] = pj; else { parent[pj] = pi; rank[pi]++; } return true; } }
标签:通过 数据 合并 路径 bsp http nec bubuko 时空
原文地址:https://www.cnblogs.com/TIMHY/p/8976359.html