Skip to content

Commit a76ac65

Browse files
authored
implement guarded array first
1 parent 5aef703 commit a76ac65

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

Select Minimum Maximum/README.markdown

+6-11
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,21 @@ Here is a simple implementation in Swift:
2424

2525
```swift
2626
func minimum<T: Comparable>(_ array: [T]) -> T? {
27-
guard !array.isEmpty else {
27+
guard var minimum = array.first else {
2828
return nil
2929
}
3030

31-
var minimum = array.first!
3231
for element in array.dropFirst() {
3332
minimum = element < minimum ? element : minimum
3433
}
3534
return minimum
3635
}
3736

3837
func maximum<T: Comparable>(_ array: [T]) -> T? {
39-
guard !array.isEmpty else {
38+
guard var maximum = array.first else {
4039
return nil
4140
}
4241

43-
var maximum = array.first!
4442
for element in array.dropFirst() {
4543
maximum = element > maximum ? element : maximum
4644
}
@@ -66,7 +64,7 @@ array.minElement() // This will return 3
6664
array.maxElement() // This will return 9
6765
```
6866

69-
```
67+
```swift
7068
let array = [ 8, 3, 9, 4, 6 ]
7169
//swift3
7270
array.min() // This will return 3
@@ -97,16 +95,13 @@ Here is a simple implementation in Swift:
9795

9896
```swift
9997
func minimumMaximum<T: Comparable>(_ array: [T]) -> (minimum: T, maximum: T)? {
100-
guard !array.isEmpty else {
98+
guard var minimum = array.first else {
10199
return nil
102100
}
103-
104-
var minimum = array.first!
105-
var maximum = array.first!
101+
var maximum = minimum
106102

107103
// 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
110105
for i in stride(from: start, to: array.count, by: 2) {
111106
let pair = (array[i], array[i+1])
112107

0 commit comments

Comments
 (0)