我想找到用于理解的数组的最小和最大元素。是否可以通过数组的一次迭代来找到min元素和max元素呢?
我正在寻找不使用Scala提供的array.min或max的解决方案。
这是一个简洁易读的解决方案,避免了丑陋的if
陈述:
def minMax(a: Array[Int]) : (Int, Int) = {
if (a.isEmpty) throw new java.lang.UnsupportedOperationException("array is empty")
a.foldLeft((a(0), a(0)))
{ case ((min, max), e) => (math.min(min, e), math.max(max, e))}
}
说明:foldLeft
是许多集合中Scala中的标准方法。它允许将累加器传递给回调函数,该回调函数将为数组的每个元素调用。
查看scaladoc了解更多详细信息
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句