说我有一个整数元组列表
var i = Array(1->3, 5->9, 15->18)
如何从上面返回最高和最低值的元组?
因此,对于上述输入,1->应该返回18,因为1是最低值,18是最高值。这是函数的骨架,它带有一个元组数组并返回最高和最高的元素。作为元组的最低值。
def returnHighest(i: Array[(Int, Int)]): (Int, Int)={
....
}
答案 0 :(得分:1)
很多方法可以做到这一点。这是一个:
val i = Array(1->3, 5->9, 15->18)
i: Array[(Int, Int)] = Array((1,3), (5,9), (15,18))
scala> val flatI = i.flatMap{case(a,b) => List(a, b)}
flatI: Array[Int] = Array(1, 3, 5, 9, 15, 18)
scala> flatI.min -> flatI.max
res3: (Int, Int) = (1,18)
答案 1 :(得分:0)
你可以使用foldLeft,但是你需要注意起始值。如果数组是空的怎么办?
val res4 = Array(1->3, 5->9, 15->18)
res4.foldLeft(res4(0))({
case (acc, i) =>
Math.min(acc._1, i._1) -> Math.max(acc._2, i._2)
})
res6: (Int, Int) = (1, 18)