如何获取元组数组的最大值和最小值

时间:2017-06-04 01:39:30

标签: scala tuples

说我有一个整数元组列表

var i = Array(1->3, 5->9, 15->18)

如何从上面返回最高和最低值的元组?

因此,对于上述输入,1->应该返回18,因为1是最低值,18是最高值。这是函数的骨架,它带有一个元组数组并返回最高和最高的元素。作为元组的最低值。

    def returnHighest(i: Array[(Int, Int)]): (Int, Int)={

      ....

  }

2 个答案:

答案 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)