1
1
//: Playground - noun: a place where people can play
2
2
3
- func kthLargest( a: [ Int ] , k: Int ) -> Int ? {
3
+ func kthLargest( _ a: [ Int ] , _ k: Int ) -> Int ? {
4
4
let len = a. count
5
5
if k > 0 && k <= len {
6
- let sorted = a. sort ( )
6
+ let sorted = a. sorted ( )
7
7
return sorted [ len - k]
8
8
} else {
9
9
return nil
@@ -12,23 +12,23 @@ func kthLargest(a: [Int], k: Int) -> Int? {
12
12
13
13
let a = [ 5 , 1 , 3 , 2 , 7 , 6 , 4 ]
14
14
15
- kthLargest ( a, k : 0 )
16
- kthLargest ( a, k : 1 )
17
- kthLargest ( a, k : 2 )
18
- kthLargest ( a, k : 3 )
19
- kthLargest ( a, k : 4 )
20
- kthLargest ( a, k : 5 )
21
- kthLargest ( a, k : 6 )
22
- kthLargest ( a, k : 7 )
23
- kthLargest ( a, k : 8 )
15
+ kthLargest ( a, 0 )
16
+ kthLargest ( a, 1 )
17
+ kthLargest ( a, 2 )
18
+ kthLargest ( a, 3 )
19
+ kthLargest ( a, 4 )
20
+ kthLargest ( a, 5 )
21
+ kthLargest ( a, 6 )
22
+ kthLargest ( a, 7 )
23
+ kthLargest ( a, 8 )
24
24
25
25
26
26
27
27
28
28
import Foundation
29
29
30
30
/* Returns a random integer in the range min...max, inclusive. */
31
- public func random( min min: Int , max: Int ) -> Int {
31
+ public func random( min: Int , max: Int ) -> Int {
32
32
assert ( min < max)
33
33
return min + Int( arc4random_uniform ( UInt32 ( max - min + 1 ) ) )
34
34
}
@@ -37,22 +37,22 @@ public func random(min min: Int, max: Int) -> Int {
37
37
Swift's swap() doesn't like it if the items you're trying to swap refer to
38
38
the same memory location. This little wrapper simply ignores such swaps.
39
39
*/
40
- public func swap< T> ( inout a: [ T ] , _ i: Int , _ j: Int ) {
40
+ public func swap< T> ( _ a: inout [ T ] , _ i: Int , _ j: Int ) {
41
41
if i != j {
42
42
swap ( & a[ i] , & a[ j] )
43
43
}
44
44
}
45
45
46
- public func randomizedSelect< T: Comparable > ( array: [ T ] , order k: Int ) -> T {
46
+ public func randomizedSelect< T: Comparable > ( _ array: [ T ] , order k: Int ) -> T {
47
47
var a = array
48
48
49
- func randomPivot< T: Comparable > ( inout a: [ T ] , _ low: Int , _ high: Int ) -> T {
49
+ func randomPivot< T: Comparable > ( _ a: inout [ T ] , _ low: Int , _ high: Int ) -> T {
50
50
let pivotIndex = random ( min: low, max: high)
51
51
swap ( & a, pivotIndex, high)
52
52
return a [ high]
53
53
}
54
54
55
- func randomizedPartition< T: Comparable > ( inout a: [ T ] , _ low: Int , _ high: Int ) -> Int {
55
+ func randomizedPartition< T: Comparable > ( _ a: inout [ T ] , _ low: Int , _ high: Int ) -> Int {
56
56
let pivot = randomPivot ( & a, low, high)
57
57
var i = low
58
58
for j in low..< high {
@@ -65,7 +65,7 @@ public func randomizedSelect<T: Comparable>(array: [T], order k: Int) -> T {
65
65
return i
66
66
}
67
67
68
- func randomizedSelect< T: Comparable > ( inout a: [ T ] , _ low: Int , _ high: Int , _ k: Int ) -> T {
68
+ func randomizedSelect< T: Comparable > ( _ a: inout [ T ] , _ low: Int , _ high: Int , _ k: Int ) -> T {
69
69
if low < high {
70
70
let p = randomizedPartition ( & a, low, high)
71
71
if k == p {
0 commit comments