如何从计数列表中获取索引列表?

时间:2018-09-10 20:33:49

标签: scala

给出一个输入序列:

Array[Int] = Array(0, 1, 0, 2, 1, 0)

我想要一个列表,该列表为我提供每个条目时间的索引,即序列中每个条目的次数。输出为:

Array[Int] = Array(1, 3, 3, 4)

有一个索引1实例,两个索引3实例,一个索引4实例。如何在scala中编写一个函数来做到这一点?

这是一次尝试,但我

val func1 = (cnt: Int, idx: Int) => Array.fill(cnt)(idx)
countarray.zipWithIndex.map(func1)

func1: (Int, Int) => Array[Int] = <function2>
<console>:132: error: type mismatch;
 found   : (Int, Int) => Array[Int]
 required: ((Int, Int)) => ?
              seq_of_vectors.map(_.numNonzeros).zipWithIndex.map(func1)

1 个答案:

答案 0 :(得分:4)

您非常亲密。

arr.zipWithIndex.flatMap{case (rep,idx) => Array.fill(rep)(idx)}

使用flatMap(),以便将所有中间Array展平为一个Array结果。