Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8f57d8a

Browse files
feat: add swift implementation to lcp problem: No.52 (#3787)
1 parent 0e56c04 commit 8f57d8a

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed

‎lcp/LCP 52. 二叉搜索树染色/README.md‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,63 @@ class TreeSet<T = number> {
762762
}
763763
```
764764

765+
#### Swift
766+
767+
```swift
768+
/* public class TreeNode {
769+
* public var val: Int
770+
* public var left: TreeNode?
771+
* public var right: TreeNode?
772+
* public init() { self.val = 0; self.left = nil; self.right = nil; }
773+
* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
774+
* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
775+
* self.val = val
776+
* self.left = left
777+
* self.right = right
778+
* }
779+
* }
780+
*/
781+
782+
class Solution {
783+
private var treeValues: [Int] = []
784+
785+
func getNumber(_ root: TreeNode?, _ ops: [[Int]]) -> Int {
786+
collectValues(root)
787+
788+
treeValues.sort()
789+
790+
var ans = 0
791+
for op in ops.reversed() {
792+
let t = op[0]
793+
let x = op[1]
794+
let y = op[2]
795+
var indicesToRemove: [Int] = []
796+
797+
for i in 0..<treeValues.count {
798+
let val = treeValues[i]
799+
if val >= x && val <= y {
800+
indicesToRemove.append(i)
801+
ans += t
802+
}
803+
}
804+
805+
for index in indicesToRemove.reversed() {
806+
treeValues.remove(at: index)
807+
}
808+
}
809+
810+
return ans
811+
}
812+
813+
private func collectValues(_ root: TreeNode?) {
814+
guard let root = root else { return }
815+
treeValues.append(root.val)
816+
collectValues(root.left)
817+
collectValues(root.right)
818+
}
819+
}
820+
```
821+
765822
<!-- tabs:end -->
766823

767824
<!-- solution:end -->
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/* public class TreeNode {
2+
* public var val: Int
3+
* public var left: TreeNode?
4+
* public var right: TreeNode?
5+
* public init() { self.val = 0; self.left = nil; self.right = nil; }
6+
* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
7+
* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
8+
* self.val = val
9+
* self.left = left
10+
* self.right = right
11+
* }
12+
* }
13+
*/
14+
15+
class Solution {
16+
private var treeValues: [Int] = []
17+
18+
func getNumber(_ root: TreeNode?, _ ops: [[Int]]) -> Int {
19+
collectValues(root)
20+
21+
treeValues.sort()
22+
23+
var ans = 0
24+
for op in ops.reversed() {
25+
let t = op[0]
26+
let x = op[1]
27+
let y = op[2]
28+
var indicesToRemove: [Int] = []
29+
30+
for i in 0..<treeValues.count {
31+
let val = treeValues[i]
32+
if val >= x && val <= y {
33+
indicesToRemove.append(i)
34+
ans += t
35+
}
36+
}
37+
38+
for index in indicesToRemove.reversed() {
39+
treeValues.remove(at: index)
40+
}
41+
}
42+
43+
return ans
44+
}
45+
46+
private func collectValues(_ root: TreeNode?) {
47+
guard let root = root else { return }
48+
treeValues.append(root.val)
49+
collectValues(root.left)
50+
collectValues(root.right)
51+
}
52+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /