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:
51
51
} ,
52
52
] ,
53
53
} ,
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
-
118
54
{
119
55
text : "带路径压缩(递归)" ,
120
56
problems : [
@@ -151,9 +87,9 @@ class UF:
151
87
self.cnt += 1
152
88
def find(self, x):
153
89
while x != self.parent[x]:
154
- x = self.parent[x]
155
90
# 路径压缩
156
91
self.parent[x] = self.parent[self.parent[x]];
92
+ x = self.parent[x]
157
93
return x
158
94
def union(self, p, q):
159
95
if self.connected(p, q): return
You can’t perform that action at this time.
0 commit comments