@@ -24,23 +24,21 @@ Here is a simple implementation in Swift:
24
24
25
25
``` swift
26
26
func minimum <T : Comparable >(_ array : [T]) -> T? {
27
- guard ! array.isEmpty else {
27
+ guard var minimum = array.first else {
28
28
return nil
29
29
}
30
30
31
- var minimum = array.first !
32
31
for element in array.dropFirst () {
33
32
minimum = element < minimum ? element : minimum
34
33
}
35
34
return minimum
36
35
}
37
36
38
37
func maximum <T : Comparable >(_ array : [T]) -> T? {
39
- guard ! array.isEmpty else {
38
+ guard var maximum = array.first else {
40
39
return nil
41
40
}
42
41
43
- var maximum = array.first !
44
42
for element in array.dropFirst () {
45
43
maximum = element > maximum ? element : maximum
46
44
}
@@ -66,7 +64,7 @@ array.minElement() // This will return 3
66
64
array.maxElement () // This will return 9
67
65
```
68
66
69
- ```
67
+ ``` swift
70
68
let array = [ 8 , 3 , 9 , 4 , 6 ]
71
69
// swift3
72
70
array.min () // This will return 3
@@ -97,16 +95,13 @@ Here is a simple implementation in Swift:
97
95
98
96
``` swift
99
97
func minimumMaximum <T : Comparable >(_ array : [T]) -> (minimum: T, maximum: T)? {
100
- guard ! array.isEmpty else {
98
+ guard var minimum = array.first else {
101
99
return nil
102
100
}
103
-
104
- var minimum = array.first !
105
- var maximum = array.first !
101
+ var maximum = minimum
106
102
107
103
// if 'array' has an odd number of items, let 'minimum' or 'maximum' deal with the leftover
108
- let hasOddNumberOfItems = array.count % 2 != 0
109
- let start = hasOddNumberOfItems ? 1 : 0
104
+ let start = array.count % 2 // 1 if odd, skipping the first element
110
105
for i in stride (from : start, to : array.count , by : 2 ) {
111
106
let pair = (array[i], array[i+ 1 ])
112
107
0 commit comments