From 9119ecdcfd5c35739d17dedc36d3b3c913ed1138 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Mon, 11 Nov 2024 08:54:41 +0100 Subject: [PATCH] feat: add swift implementation to lcp problem: No.10 --- .../README.md" | 37 +++++++++++++++++++ .../Solution.swift" | 32 ++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 "lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/Solution.swift" diff --git "a/lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/README.md" "b/lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/README.md" index 217b12783b14e..e0acb3b6c74f8 100644 --- "a/lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/README.md" +++ "b/lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/README.md" @@ -204,6 +204,43 @@ function minimalExecTime(root: TreeNode | null): number { } ``` +#### 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 minimalExecTime(_ root: TreeNode?) -> Double { + return dfs(root)[1] + } + + private func dfs(_ root: TreeNode?) -> [Double] { + guard let root = root else { return [0.0, 0.0] } + + let left = dfs(root.left) + let right = dfs(root.right) + + let sum = left[0] + right[0] + Double(root.val) + let time = max(max(left[1], right[1]), (left[0] + right[0]) / 2) + Double(root.val) + + return [sum, time] + } +} +``` + diff --git "a/lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/Solution.swift" "b/lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/Solution.swift" new file mode 100644 index 0000000000000..d1449cfd0909d --- /dev/null +++ "b/lcp/LCP 10. \344\272\214\345\217\211\346\240\221\344\273\273\345\212\241\350\260\203\345\272\246/Solution.swift" @@ -0,0 +1,32 @@ +/** +* 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 minimalExecTime(_ root: TreeNode?) -> Double { + return dfs(root)[1] + } + + private func dfs(_ root: TreeNode?) -> [Double] { + guard let root = root else { return [0.0, 0.0] } + + let left = dfs(root.left) + let right = dfs(root.right) + + let sum = left[0] + right[0] + Double(root.val) + let time = max(max(left[1], right[1]), (left[0] + right[0]) / 2) + Double(root.val) + + return [sum, time] + } +} \ No newline at end of file