@@ -24,26 +24,24 @@ Here is a simple implementation in Swift:
24
24
25
25
``` swift
26
26
func minimum <T : Comparable >(_ array : [T]) -> T? {
27
- var array = array
28
27
guard ! array.isEmpty else {
29
28
return nil
30
29
}
31
30
32
- var minimum = array.removeFirst ()
33
- for element in array {
31
+ var minimum = array.first !
32
+ for element in array. dropFirst () {
34
33
minimum = element < minimum ? element : minimum
35
34
}
36
35
return minimum
37
36
}
38
37
39
38
func maximum <T : Comparable >(_ array : [T]) -> T? {
40
- var array = array
41
39
guard ! array.isEmpty else {
42
40
return nil
43
41
}
44
42
45
- var maximum = array.removeFirst ()
46
- for element in array {
43
+ var maximum = array.first !
44
+ for element in array. dropFirst () {
47
45
maximum = element > maximum ? element : maximum
48
46
}
49
47
return maximum
@@ -99,21 +97,19 @@ Here is a simple implementation in Swift:
99
97
100
98
``` swift
101
99
func minimumMaximum <T : Comparable >(_ array : [T]) -> (minimum: T, maximum: T)? {
102
- var array = array
103
100
guard ! array.isEmpty else {
104
101
return nil
105
102
}
106
103
107
104
var minimum = array.first !
108
105
var maximum = array.first !
109
106
107
+ // if 'array' has an odd number of items, let 'minimum' or 'maximum' deal with the leftover
110
108
let hasOddNumberOfItems = array.count % 2 != 0
111
- if hasOddNumberOfItems {
112
- array.removeFirst ()
113
- }
109
+ let start = hasOddNumberOfItems ? 1 : 0
110
+ for i in stride ( from : start, to : array.count , by : 2 ) {
111
+ let pair = (array[i], array[i + 1 ])
114
112
115
- while ! array.isEmpty {
116
- let pair = (array.removeFirst (), array.removeFirst ())
117
113
if pair.0 > pair.1 {
118
114
if pair.0 > maximum {
119
115
maximum = pair.0
0 commit comments