Skip to content

Commit b8d668d

Browse files
authored
update to match source
1 parent e15e133 commit b8d668d

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

Select Minimum Maximum/README.markdown

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,24 @@ Here is a simple implementation in Swift:
2424

2525
```swift
2626
func minimum<T: Comparable>(_ array: [T]) -> T? {
27-
var array = array
2827
guard !array.isEmpty else {
2928
return nil
3029
}
3130

32-
var minimum = array.removeFirst()
33-
for element in array {
31+
var minimum = array.first!
32+
for element in array.dropFirst() {
3433
minimum = element < minimum ? element : minimum
3534
}
3635
return minimum
3736
}
3837

3938
func maximum<T: Comparable>(_ array: [T]) -> T? {
40-
var array = array
4139
guard !array.isEmpty else {
4240
return nil
4341
}
4442

45-
var maximum = array.removeFirst()
46-
for element in array {
43+
var maximum = array.first!
44+
for element in array.dropFirst() {
4745
maximum = element > maximum ? element : maximum
4846
}
4947
return maximum
@@ -99,21 +97,19 @@ Here is a simple implementation in Swift:
9997

10098
```swift
10199
func minimumMaximum<T: Comparable>(_ array: [T]) -> (minimum: T, maximum: T)? {
102-
var array = array
103100
guard !array.isEmpty else {
104101
return nil
105102
}
106103

107104
var minimum = array.first!
108105
var maximum = array.first!
109106

107+
// if 'array' has an odd number of items, let 'minimum' or 'maximum' deal with the leftover
110108
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])
114112

115-
while !array.isEmpty {
116-
let pair = (array.removeFirst(), array.removeFirst())
117113
if pair.0 > pair.1 {
118114
if pair.0 > maximum {
119115
maximum = pair.0

0 commit comments

Comments
 (0)