@@ -235,6 +235,57 @@ function maxmiumScore(cards: number[], cnt: number): number {
235
235
}
236
236
```
237
237
238
+ #### Swift
239
+
240
+ ``` swift
241
+ class Solution {
242
+ func maximumScore (_ cards : [Int ], _ cnt : Int ) -> Int {
243
+ let sortedCards = cards.sorted ()
244
+ let n = sortedCards.count
245
+ var ans = 0
246
+
247
+ for i in 0 ..< cnt {
248
+ ans += sortedCards[n - i - 1 ]
249
+ }
250
+
251
+ if ans % 2 == 0 {
252
+ return ans
253
+ }
254
+
255
+ var smallestOddInside = Int .max
256
+ var smallestEvenInside = Int .max
257
+ var largestOddOutside = Int .min
258
+ var largestEvenOutside = Int .min
259
+
260
+ for i in (n - cnt)..< n {
261
+ if sortedCards[i] % 2 == 1 {
262
+ smallestOddInside = min (smallestOddInside, sortedCards[i])
263
+ } else {
264
+ smallestEvenInside = min (smallestEvenInside, sortedCards[i])
265
+ }
266
+ }
267
+
268
+ for i in 0 ..< (n - cnt) {
269
+ if sortedCards[i] % 2 == 1 {
270
+ largestOddOutside = max (largestOddOutside, sortedCards[i])
271
+ } else {
272
+ largestEvenOutside = max (largestEvenOutside, sortedCards[i])
273
+ }
274
+ }
275
+
276
+ var maxScore = -1
277
+ if smallestOddInside != Int .max && largestEvenOutside != Int .min {
278
+ maxScore = max (maxScore, ans - smallestOddInside + largestEvenOutside)
279
+ }
280
+ if smallestEvenInside != Int .max && largestOddOutside != Int .min {
281
+ maxScore = max (maxScore, ans - smallestEvenInside + largestOddOutside)
282
+ }
283
+
284
+ return maxScore >= 0 ? maxScore : 0
285
+ }
286
+ }
287
+ ```
288
+
238
289
<!-- tabs: end -->
239
290
240
291
<!-- solution: end -->
0 commit comments