Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
val a = Array(2, 3, 1)
a.min
myMin1(a)
myMin2(a)
myMin3(a)
myMinMax1(a)
myMinMax2(a)
myMinMax3(a)
myMinMax4(a)
def myMin1(a: Array[Int]) =
// a.foldLeft(Int.MaxValue)((acc, v) => Math.min(acc, v))
a.foldLeft(Int.MaxValue)(Math.min)
def myMin2(a: Array[Int]) =
a.reduceLeft(Math.min)
def myMin3(a: Array[Int]) =
var min = Int.MaxValue
for v <- a do if v < min then min = v
min
def myMinMax1(a: Array[Int]) =
(a.min, a.max)
def myMinMax2(a: Array[Int]) =
a.foldLeft((Int.MaxValue, Int.MinValue)) { case ((min, max), v) =>
(if v < min then v else min, if v > max then v else max)
}
def myMinMax3(a: Array[Int]) =
a.foldLeft((Int.MaxValue, Int.MinValue)) { case ((min, max), v) =>
(Math.min(min, v), Math.max(max, v))
}
def myMinMax4(a: Array[Int]) =
var min = Int.MaxValue
var max = Int.MinValue
var i = 0
val length = a.length
while i < length do
val v = a(i)
if v < min then min = v
if v > max then max = v
i = i + 1
(min, max)