File tree Expand file tree Collapse file tree 2 files changed +109
-0
lines changed Expand file tree Collapse file tree 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> {
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 -->
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