Skip to content

Commit 3d532b8

Browse files
authoredNov 11, 2024
feat: add swift implementation to lcp problem: No.10 (#3746)
1 parent c93288f commit 3d532b8

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed
 

‎lcp/LCP 10. 二叉树任务调度/README.md

+37
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,43 @@ function minimalExecTime(root: TreeNode | null): number {
204204
}
205205
```
206206

207+
#### Swift
208+
209+
```swift
210+
/**
211+
* public class TreeNode {
212+
* public var val: Int
213+
* public var left: TreeNode?
214+
* public var right: TreeNode?
215+
* public init() { self.val = 0; self.left = nil; self.right = nil; }
216+
* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
217+
* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
218+
* self.val = val
219+
* self.left = left
220+
* self.right = right
221+
* }
222+
* }
223+
*/
224+
225+
class Solution {
226+
func minimalExecTime(_ root: TreeNode?) -> Double {
227+
return dfs(root)[1]
228+
}
229+
230+
private func dfs(_ root: TreeNode?) -> [Double] {
231+
guard let root = root else { return [0.0, 0.0] }
232+
233+
let left = dfs(root.left)
234+
let right = dfs(root.right)
235+
236+
let sum = left[0] + right[0] + Double(root.val)
237+
let time = max(max(left[1], right[1]), (left[0] + right[0]) / 2) + Double(root.val)
238+
239+
return [sum, time]
240+
}
241+
}
242+
```
243+
207244
<!-- tabs:end -->
208245

209246
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* public class TreeNode {
3+
* public var val: Int
4+
* public var left: TreeNode?
5+
* public var right: TreeNode?
6+
* public init() { self.val = 0; self.left = nil; self.right = nil; }
7+
* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
8+
* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
9+
* self.val = val
10+
* self.left = left
11+
* self.right = right
12+
* }
13+
* }
14+
*/
15+
16+
class Solution {
17+
func minimalExecTime(_ root: TreeNode?) -> Double {
18+
return dfs(root)[1]
19+
}
20+
21+
private func dfs(_ root: TreeNode?) -> [Double] {
22+
guard let root = root else { return [0.0, 0.0] }
23+
24+
let left = dfs(root.left)
25+
let right = dfs(root.right)
26+
27+
let sum = left[0] + right[0] + Double(root.val)
28+
let time = max(max(left[1], right[1]), (left[0] + right[0]) / 2) + Double(root.val)
29+
30+
return [sum, time]
31+
}
32+
}

0 commit comments

Comments
 (0)