2017-06-04 64 views
1
數組

說的最小值我有一個整數如何獲得最大和元組

的元組的列表
var i = Array(1->3, 5->9, 15->18) 

我怎樣才能回報最高值和最低值的元組從上面?

因此,對於上述輸入,應該返回1-> 18,因爲1是最低值,18是最高值。下面是使用元組數組的函數的骨架,並將最低值作爲元組返回到最高值&。

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

     .... 

    } 

回答

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) 
+4

由於順序無關緊要,並且您無論如何都無法在空列表上運行,您可以使用'res4.reduce {(t1,t2)=>(Math.min(t1 ._1,t2._1),Math.max(t1._2,t2._2))}'。 – ephemient

+0

當然是的。這好多了。謝謝。 – Stephen

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)