这是一个简单的编码练习:在给定列表中找到所有局部最大值。一个当地最大的一个项目,这是比这两个项目之前和之后更大。
localMaxima of [2,9,5,6,1] is [9,6]
localMaxima of [2,3,4,1,5] == [4]
localMaxima of [1,2,3,4,5] == []
我将此函数编写如下:
def localMaxima(l: List[Int]) =
(l, l.tail, l.tail.tail).zipped.toList
.filter(t => t._2 > t._1 && t._2 > t._3)
.map(_._2)
您将如何编写局部最大值?
scala> val l = List(2,9,5,6,1)
l: List[Int] = List(2, 9, 5, 6, 1)
scala> l.sliding(3).collect{ case a::b::c::Nil if a<b && b>c => b }.toList
res2: List[Int] = List(9, 6)
scala> val l = List(2,3,4,1,5)
l: List[Int] = List(2, 3, 4, 1, 5)
scala> l.sliding(3).collect{ case a::b::c::Nil if a<b && b>c => b }.toList
res3: List[Int] = List(4)
scala> val l = List(1,2,3,4,5)
l: List[Int] = List(1, 2, 3, 4, 5)
scala> l.sliding(3).collect{ case a::b::c::Nil if a<b && b>c => b }.toList
res4: List[Int] = List()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句