Skip to content

Commit 936eb82

Browse files
author
lucifer
committed
fix: 路径压缩
1 parent 472df4e commit 936eb82

File tree

1 file changed

+1
-65
lines changed

1 file changed

+1
-65
lines changed

src/codeTemplates/uf.js

Lines changed: 1 addition & 65 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)