File tree Expand file tree Collapse file tree 5 files changed +30
-24
lines changed Expand file tree Collapse file tree 5 files changed +30
-24
lines changed File renamed without changes.
Original file line number Diff line number Diff line change @@ -22,21 +22,24 @@ public struct UnionFind<T: Hashable> {
2222 }
2323 }
2424
25- public mutating func findSetOfElement( element: T ) -> Int {
26- let indexOfElement = index [ element] !
27- return findSetByIndexOfElement ( indexOfElement)
25+ public mutating func findSetOfElement( element: T ) -> Int ? {
26+ if let indexOfElement = index [ element] {
27+ return findSetByIndexOfElement ( indexOfElement)
28+ } else {
29+ return nil
30+ }
2831 }
2932
3033 public mutating func unionSetsWithElement( firstElement: T , andSecondElement secondElement: T ) {
31- let firstSet = findSetOfElement ( firstElement)
32- let secondSet = findSetOfElement ( secondElement )
33- if ( firstSet != secondSet) {
34- if ( size [ firstSet] < size [ secondSet] ) {
35- parent [ firstSet ] = secondSet;
36- size [ secondSet ] += size [ firstSet ]
37- } else {
38- parent [ secondSet ] = firstSet;
39- size [ firstSet ] += size [ secondSet ]
34+ if let firstSet = findSetOfElement ( firstElement) , secondSet = findSetOfElement ( secondElement ) {
35+ if ( firstSet != secondSet ) {
36+ if ( size [ firstSet] < size [ secondSet] ) {
37+ parent [ firstSet] = secondSet;
38+ size [ secondSet ] += size [ firstSet ]
39+ } else {
40+ parent [ secondSet ] = firstSet;
41+ size [ firstSet ] += size [ secondSet ]
42+ }
4043 }
4144 }
4245 }
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change @@ -30,21 +30,24 @@ public struct UnionFind<T: Hashable> {
3030 }
3131 }
3232
33- public mutating func findSetOfElement( element: T ) -> Int {
34- let indexOfElement = index [ element] !
35- return findSetByIndexOfElement ( indexOfElement)
33+ public mutating func findSetOfElement( element: T ) -> Int ? {
34+ if let indexOfElement = index [ element] {
35+ return findSetByIndexOfElement ( indexOfElement)
36+ } else {
37+ return nil
38+ }
3639 }
3740
3841 public mutating func unionSetsWithElement( firstElement: T , andSecondElement secondElement: T ) {
39- let firstSet = findSetOfElement ( firstElement)
40- let secondSet = findSetOfElement ( secondElement )
41- if ( firstSet != secondSet) {
42- if ( size [ firstSet] < size [ secondSet] ) {
43- parent [ firstSet ] = secondSet;
44- size [ secondSet ] += size [ firstSet ]
45- } else {
46- parent [ secondSet ] = firstSet;
47- size [ firstSet ] += size [ secondSet ]
42+ if let firstSet = findSetOfElement ( firstElement) , secondSet = findSetOfElement ( secondElement ) {
43+ if ( firstSet != secondSet ) {
44+ if ( size [ firstSet] < size [ secondSet] ) {
45+ parent [ firstSet] = secondSet;
46+ size [ secondSet ] += size [ firstSet ]
47+ } else {
48+ parent [ secondSet ] = firstSet;
49+ size [ firstSet ] += size [ secondSet ]
50+ }
4851 }
4952 }
5053 }
You can’t perform that action at this time.
0 commit comments