From fd7b75188ddf93e416c4a883ce04171bfcc5df7e Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Thu, 30 May 2024 08:09:02 +0100 Subject: [PATCH 1/3] Swift implementation for LCOF 68-I --- .../README.md" | 34 +++++++++++++++++++ .../Solution.swift" | 29 ++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 "lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" diff --git "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" index b2c0307251537..a269764b60e33 100644 --- "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" +++ "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" @@ -270,6 +270,40 @@ var lowestCommonAncestor = function (root, p, q) { }; ``` +#### Swift + +```swift +/* public class TreeNode { +* public var val: Int +* public var left: TreeNode? +* public var right: TreeNode? +* public init() { self.val = 0; self.left = nil; self.right = nil; } +* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; } +* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { +* self.val = val +* self.left = left +* self.right = right +* } +* } +*/ + +class Solution { + func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode, _ q: TreeNode) -> TreeNode? { + var node = root + while let current = node { + if current.val < p.val && current.val < q.val { + node = current.right + } else if current.val > p.val && current.val > q.val { + node = current.left + } else { + return current + } + } + return nil + } +} +``` + diff --git "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" new file mode 100644 index 0000000000000..2f8e3ae587b7f --- /dev/null +++ "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" @@ -0,0 +1,29 @@ +/* public class TreeNode { +* public var val: Int +* public var left: TreeNode? +* public var right: TreeNode? +* public init() { self.val = 0; self.left = nil; self.right = nil; } +* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; } +* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { +* self.val = val +* self.left = left +* self.right = right +* } +* } +*/ + +class Solution { + func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode, _ q: TreeNode) -> TreeNode? { + var node = root + while let current = node { + if current.val < p.val && current.val < q.val { + node = current.right + } else if current.val > p.val && current.val > q.val { + node = current.left + } else { + return current + } + } + return nil + } +} \ No newline at end of file From 280f2cb0a4fb234addbcd62aeea562e992a9ea67 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 30 May 2024 16:53:24 +0800 Subject: [PATCH 2/3] Update README.md --- .../README.md" | 72 ++++++++++--------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" index a269764b60e33..c59514fedcd0d 100644 --- "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" +++ "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/README.md" @@ -270,40 +270,6 @@ var lowestCommonAncestor = function (root, p, q) { }; ``` -#### Swift - -```swift -/* public class TreeNode { -* public var val: Int -* public var left: TreeNode? -* public var right: TreeNode? -* public init() { self.val = 0; self.left = nil; self.right = nil; } -* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; } -* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { -* self.val = val -* self.left = left -* self.right = right -* } -* } -*/ - -class Solution { - func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode, _ q: TreeNode) -> TreeNode? { - var node = root - while let current = node { - if current.val < p.val && current.val < q.val { - node = current.right - } else if current.val > p.val && current.val > q.val { - node = current.left - } else { - return current - } - } - return nil - } -} -``` - @@ -450,6 +416,44 @@ function lowestCommonAncestor( } ``` +#### Swift + +```swift +/** + * Definition for a binary tree node. + * public class TreeNode { + * public var val: Int + * public var left: TreeNode? + * public var right: TreeNode? + * public init(_ val: Int) { + * self.val = val + * self.left = nil + * self.right = nil + * } + * } + */ + +class Solution { + func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode?, _ q: TreeNode?) -> TreeNode? { + guard let p = p, let q = q else { + return nil + } + + var node = root + while let current = node { + if current.val < p.val && current.val < q.val { + node = current.right + } else if current.val > p.val && current.val > q.val { + node = current.left + } else { + return current + } + } + return nil + } +} +``` + From f9e8122981dca61d737801ea7f37aeeab9c4c917 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 30 May 2024 16:53:39 +0800 Subject: [PATCH 3/3] Update and rename Solution.swift to Solution2.swift --- .../Solution.swift" | 29 ---------------- .../Solution2.swift" | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+), 29 deletions(-) delete mode 100644 "lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" create mode 100644 "lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution2.swift" diff --git "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" deleted file mode 100644 index 2f8e3ae587b7f..0000000000000 --- "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution.swift" +++ /dev/null @@ -1,29 +0,0 @@ -/* public class TreeNode { -* public var val: Int -* public var left: TreeNode? -* public var right: TreeNode? -* public init() { self.val = 0; self.left = nil; self.right = nil; } -* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; } -* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { -* self.val = val -* self.left = left -* self.right = right -* } -* } -*/ - -class Solution { - func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode, _ q: TreeNode) -> TreeNode? { - var node = root - while let current = node { - if current.val < p.val && current.val < q.val { - node = current.right - } else if current.val > p.val && current.val > q.val { - node = current.left - } else { - return current - } - } - return nil - } -} \ No newline at end of file diff --git "a/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution2.swift" "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution2.swift" new file mode 100644 index 0000000000000..392dd915f5420 --- /dev/null +++ "b/lcof/\351\235\242\350\257\225\351\242\23068 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210/Solution2.swift" @@ -0,0 +1,33 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * public var val: Int + * public var left: TreeNode? + * public var right: TreeNode? + * public init(_ val: Int) { + * self.val = val + * self.left = nil + * self.right = nil + * } + * } + */ + +class Solution { + func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode?, _ q: TreeNode?) -> TreeNode? { + guard let p = p, let q = q else { + return nil + } + + var node = root + while let current = node { + if current.val < p.val && current.val < q.val { + node = current.right + } else if current.val > p.val && current.val > q.val { + node = current.left + } else { + return current + } + } + return nil + } +}