diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271/README.md" index b9dda603f6065..25fa6655da072 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271/README.md" @@ -164,6 +164,36 @@ func findRedundantConnection(edges [][]int) []int { } ``` +#### Swift + +```swift +class Solution { + private var parent: [Int] = [] + + func findRedundantConnection(_ edges: [[Int]]) -> [Int] { + parent = Array(0..<1010) + + for edge in edges { + let a = edge[0] + let b = edge[1] + + if find(a) == find(b) { + return edge + } + parent[find(a)] = find(b) + } + return [] + } + + private func find(_ x: Int) -> Int { + if parent[x] != x { + parent[x] = find(parent[x]) + } + return parent[x] + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271/Solution.swift" new file mode 100644 index 0000000000000..5987e53a2b151 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271/Solution.swift" @@ -0,0 +1,25 @@ +class Solution { + private var parent: [Int] = [] + + func findRedundantConnection(_ edges: [[Int]]) -> [Int] { + parent = Array(0..<1010) + + for edge in edges { + let a = edge[0] + let b = edge[1] + + if find(a) == find(b) { + return edge + } + parent[find(a)] = find(b) + } + return [] + } + + private func find(_ x: Int) -> Int { + if parent[x] != x { + parent[x] = find(parent[x]) + } + return parent[x] + } +} \ No newline at end of file