[684][中等][并查集] 冗余连接
题目描述
输入: [[1,2], [1,3], [2,3]]
输出: [2,3]
解释: 给定的无向图为:
1
/ \
2 - 3输入: [[1,2], [2,3], [3,4], [1,4], [1,5]]
输出: [1,4]
解释: 给定的无向图为:
5 - 1 - 2
| |
4 - 3解题思路
最后更新于
输入: [[1,2], [1,3], [2,3]]
输出: [2,3]
解释: 给定的无向图为:
1
/ \
2 - 3输入: [[1,2], [2,3], [3,4], [1,4], [1,5]]
输出: [1,4]
解释: 给定的无向图为:
5 - 1 - 2
| |
4 - 3最后更新于
class UnionFind:
def __init__(self, n):
self.root = list(range(n + 1))
def find(self, i):
if i == self.root[i]:
return i
self.root[i] = self.find(self.root[i])
return self.root[i]
def union(self, i, j):
self.root[self.find(j)] = self.find(i)
def connected(self, i, j):
return self.find(i) == self.find(j)
class Solution:
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
uf = UnionFind(len(edges))
last = []
for start, end in edges:
if uf.connected(start, end) and start < end:
last = [start, end]
uf.union(start, end)
return last