[英]How to find multiple maximum arguments in a scala list
晚上好,如何在scala列表中找到多個最大參數:
val finale = list(2,2,3,4,6,6);
val indexMax = finale.zipWithIndex.maxBy(_._1)._2
在這里,我只能找到一個最大值(6)的參數,但是我想找到最后兩個(6)值
摘錄自Rajkumar的評論,此代碼段返回了一個List,其中包含列表中最大元素的索引。
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)
由於過多使用帶有下划線匿名功能符號的元組訪問器,因此它是很晦澀的。 (_._1).
簡單的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,可以更高效地完成此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.