File tree Expand file tree Collapse file tree 1 file changed +1
-65
lines changed Expand file tree Collapse file tree 1 file changed +1
-65
lines changed Original file line number Diff line number Diff line change @@ -51,70 +51,6 @@ class UF:
5151 } ,
5252 ] ,
5353 } ,
54- {
55- text : "带路径压缩(迭代)" ,
56- problems : [
57- {
58- title : "547. 朋友圈" ,
59- id : "friend-circles" ,
60- } ,
61- {
62- title : "721. 账户合并" ,
63- id : "accounts-merge" ,
64- } ,
65- {
66- title : "990. 等式方程的可满足性" ,
67- id : "satisfiability-of-equality-equations" ,
68- } ,
69- {
70- title : "1202. 交换字符串中的元素" ,
71- id : "smallest-string-with-swaps" ,
72- } ,
73- ] ,
74- codes : [
75- {
76- language : "py" ,
77- text : `
78- class UF:
79- parent = {}
80- size = {}
81- cnt = 0
82- def __init__(self, M):
83- # 初始化 parent,size 和 cnt
84- for i in range(M):
85- self.parent[i] = i
86- self.size[i] = 1
87- self.cnt += 1
88- def find(self, x):
89- # 根节点
90- r = x
91- while r != parent[r]:
92- r = parent[r]
93- k = x
94- while k != r:
95- # 暂存parent[k]的父节点
96- j = parent[k]
97- parent[k] = r
98- k = j
99- return r
100- def union(self, p, q):
101- if self.connected(p, q): return
102- # 小的树挂到大的树上, 使树尽量平衡
103- leader_p = self.find(p)
104- leader_q = self.find(q)
105- if self.size[leader_p] < self.size[leader_q]:
106- self.parent[leader_p] = leader_q
107- self.size[leader_p] += self.size[leader_q]
108- else:
109- self.parent[leader_q] = leader_p
110- self.size[leader_q] += self.size[leader_p]
111- self.cnt -= 1
112- def connected(self, p, q):
113- return self.find(p) == self.find(q)` ,
114- } ,
115- ] ,
116- } ,
117-
11854 {
11955 text : "带路径压缩(递归)" ,
12056 problems : [
@@ -151,9 +87,9 @@ class UF:
15187 self.cnt += 1
15288 def find(self, x):
15389 while x != self.parent[x]:
154- x = self.parent[x]
15590 # 路径压缩
15691 self.parent[x] = self.parent[self.parent[x]];
92+ x = self.parent[x]
15793 return x
15894 def union(self, p, q):
15995 if self.connected(p, q): return
You can’t perform that action at this time.
0 commit comments