A Swift implementation of a disjoint-set data structure.
A disjoint-set is like a regular set but with an extra superpower: it can partition members into disjoint subsets without increasing the upper bound time complexity of standard operations.
| Operation | Time Complexity | 
|---|---|
| isEmpty | O(1) | 
| count | O(1) | 
| insert(_:unioningWith:) | O(1) | 
| contains(_:) | O(1) | 
| count(ofSubsetsContaining:) | O(1) | 
| allSubsets() | O(n) | 
| subset(containing:) | O(n) | 
To confirm that the real-world results match the theory, use DisjointSet.attabench.
See Tests/DisjointSetTests/LeetCodeTests.swift.
Tested using Swift 4. MIT license.