File tree 2 files changed +53
-0
lines changed
2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -200,6 +200,35 @@ function minimumOperations(leaves: string): number {
200
200
}
201
201
```
202
202
203
+ #### Swift
204
+
205
+ ``` swift
206
+ class Solution {
207
+ func minimumOperations (_ leaves : String ) -> Int {
208
+ let n = leaves.count
209
+ let inf = Int .max / 2
210
+ var f = Array (repeating : [inf, inf, inf], count : n)
211
+ let leavesArray = Array (leaves)
212
+
213
+ f[0 ][0 ] = leavesArray[0 ] == " r" ? 0 : 1
214
+
215
+ for i in 1 ..< n {
216
+ if leavesArray[i] == " r" {
217
+ f[i][0 ] = f[i - 1 ][0 ]
218
+ f[i][1 ] = min (f[i - 1 ][0 ], f[i - 1 ][1 ]) + 1
219
+ f[i][2 ] = min (f[i - 1 ][1 ], f[i - 1 ][2 ])
220
+ } else {
221
+ f[i][0 ] = f[i - 1 ][0 ] + 1
222
+ f[i][1 ] = min (f[i - 1 ][0 ], f[i - 1 ][1 ])
223
+ f[i][2 ] = min (f[i - 1 ][1 ], f[i - 1 ][2 ]) + 1
224
+ }
225
+ }
226
+
227
+ return f[n - 1 ][2 ]
228
+ }
229
+ }
230
+ ```
231
+
203
232
<!-- tabs: end -->
204
233
205
234
<!-- solution: end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func minimumOperations( _ leaves: String ) -> Int {
3
+ let n = leaves. count
4
+ let inf = Int . max / 2
5
+ var f = Array ( repeating: [ inf, inf, inf] , count: n)
6
+ let leavesArray = Array ( leaves)
7
+
8
+ f [ 0 ] [ 0 ] = leavesArray [ 0 ] == " r " ? 0 : 1
9
+
10
+ for i in 1 ..< n {
11
+ if leavesArray [ i] == " r " {
12
+ f [ i] [ 0 ] = f [ i - 1 ] [ 0 ]
13
+ f [ i] [ 1 ] = min ( f [ i - 1 ] [ 0 ] , f [ i - 1 ] [ 1 ] ) + 1
14
+ f [ i] [ 2 ] = min ( f [ i - 1 ] [ 1 ] , f [ i - 1 ] [ 2 ] )
15
+ } else {
16
+ f [ i] [ 0 ] = f [ i - 1 ] [ 0 ] + 1
17
+ f [ i] [ 1 ] = min ( f [ i - 1 ] [ 0 ] , f [ i - 1 ] [ 1 ] )
18
+ f [ i] [ 2 ] = min ( f [ i - 1 ] [ 1 ] , f [ i - 1 ] [ 2 ] ) + 1
19
+ }
20
+ }
21
+
22
+ return f [ n - 1 ] [ 2 ]
23
+ }
24
+ }
You can’t perform that action at this time.
0 commit comments