File tree Expand file tree Collapse file tree 2 files changed +71
-0
lines changed Expand file tree Collapse file tree 2 files changed +71
-0
lines changed Original file line number Diff line number Diff line change @@ -412,6 +412,44 @@ public class MedianFinder {
412
412
*/
413
413
```
414
414
415
+ #### Swift
416
+
417
+ ``` swift
418
+ class MedianFinder {
419
+ private var lowerHalf = [Int ]()
420
+ private var upperHalf = [Int ]()
421
+
422
+ init () {}
423
+
424
+ func addNum (_ num : Int ) {
425
+ if lowerHalf.count > upperHalf.count {
426
+ lowerHalf.append (num)
427
+ lowerHalf.sort (by : > )
428
+ upperHalf.append (lowerHalf.removeFirst ())
429
+ } else {
430
+ upperHalf.append (num)
431
+ upperHalf.sort ()
432
+ lowerHalf.append (upperHalf.removeFirst ())
433
+ }
434
+ }
435
+
436
+ func findMedian () -> Double {
437
+ if lowerHalf.count > upperHalf.count {
438
+ return Double (lowerHalf.first ! )
439
+ } else {
440
+ return (Double (lowerHalf.first ! ) + Double (upperHalf.first ! )) / 2.0
441
+ }
442
+ }
443
+ }
444
+
445
+ /**
446
+ * Your MedianFinder object will be instantiated and called as such:
447
+ * let obj = MedianFinder();
448
+ * obj.addNum(num);
449
+ * let param_2 = obj.findMedian();
450
+ */
451
+ ```
452
+
415
453
<!-- tabs:end -->
416
454
417
455
<!-- solution:end -->
Original file line number Diff line number Diff line change
1
+ class MedianFinder {
2
+ private var lowerHalf = [ Int] ( )
3
+ private var upperHalf = [ Int] ( )
4
+
5
+ init ( ) { }
6
+
7
+ func addNum( _ num: Int ) {
8
+ if lowerHalf. count > upperHalf. count {
9
+ lowerHalf. append ( num)
10
+ lowerHalf. sort ( by: > )
11
+ upperHalf. append ( lowerHalf. removeFirst ( ) )
12
+ } else {
13
+ upperHalf. append ( num)
14
+ upperHalf. sort ( )
15
+ lowerHalf. append ( upperHalf. removeFirst ( ) )
16
+ }
17
+ }
18
+
19
+ func findMedian( ) -> Double {
20
+ if lowerHalf. count > upperHalf. count {
21
+ return Double ( lowerHalf. first!)
22
+ } else {
23
+ return ( Double ( lowerHalf. first!) + Double( upperHalf. first!) ) / 2.0
24
+ }
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Your MedianFinder object will be instantiated and called as such:
30
+ * let obj = MedianFinder();
31
+ * obj.addNum(num);
32
+ * let param_2 = obj.findMedian();
33
+ */
You can’t perform that action at this time.
0 commit comments