File tree 2 files changed +109
-0
lines changed
2 files changed +109
-0
lines changed Original file line number Diff line number Diff line change @@ -762,6 +762,63 @@ class TreeSet<T = number> {
762
762
}
763
763
```
764
764
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
+
765
822
<!-- tabs: end -->
766
823
767
824
<!-- solution: end -->
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments