如何在scala列表中查找多个最大参数
晚上好,, 如何在scala列表中查找多个最大参数:如何在scala列表中查找多个最大参数,scala,Scala,晚上好,, 如何在scala列表中查找多个最大参数: val finale = list(2,2,3,4,6,6); val indexMax = finale.zipWithIndex.maxBy(_._1)._2 这里我只能找到一个最大值(6)的参数,但我想找到最后两个(6)值一个简单的foldLeft怎么样 finale.foldLeft(Seq.empty[Int]) { case (max @ head :: _, element) if element == h
val finale = list(2,2,3,4,6,6);
val indexMax = finale.zipWithIndex.maxBy(_._1)._2
这里我只能找到一个最大值(6)的参数,但我想找到最后两个(6)值一个简单的foldLeft怎么样
finale.foldLeft(Seq.empty[Int]) {
case (max @ head :: _, element) if element == head => max :+ element
case (max @ head :: _, element) if element > head => Seq(element)
case (Nil, element) => Seq(element)
case (max, _) => max
}
不使用Seq可以更有效地实现这一点。根据Rajkumar的注释进行了明显修改,该代码段返回一个列表,其中包含列表中最大元素的索引
def findMaximumIndices(list: List[Int]): List[Int] =
list.zipWithIndex.groupBy(_._1).maxBy(_._1)._2.map(_._2)
val list = List(2,2,3,4,6,6)
val maximumIndices = findMaximumIndices(list)
// maximumIndices: List[Int] = List(4, 5)
由于过度使用带有下划线匿名函数表示法的元组访问器,这一点相当模糊<代码>(\uu.\u1)。试试
结局。群比(x=>x)。马克比(\uu.\u1)
谢谢“路易斯·米格尔·梅西亚·苏亚雷斯”非常有帮助:)我解决了我的问题。@LuisMiguelMejíaSuárez你介意把它作为一个实际的答案发布吗?如果你想找到最后两个6,为什么你要用索引来写ziping?@Andreytukin抱歉花了这么长时间,我只是删除了评论,将其作为一个答案发布。OP想“找到”它们——我假设出现最大值的索引列表。