一个使用 Swift 实现的 并查集数据结构。
并查集类似于常规集合,但具有额外的超能力:它可以将成员划分为不相交的子集,而不会增加标准操作的时间复杂度上限。
操作 | 时间复杂度 |
---|---|
isEmpty |
O(1) |
count |
O(1) |
insert(_:unioningWith:) |
O(1) |
contains(_:) |
O(1) |
count(ofSubsetsContaining:) |
O(1) |
allSubsets() |
O(n) |
subset(containing:) |
O(n) |
要确认实际结果与理论相符,请使用 DisjointSet.attabench
。
请参阅 Tests/DisjointSetTests/LeetCodeTests.swift
。
使用 Swift 4 测试。 MIT 许可证。