簡體   English   中英

如何在scala列表中找到多個最大參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM