scala的简单算法

时间:2016-04-30 15:59:15

标签: algorithm scala

scala中非常简单的算法

  def listReplication(num: Int, arr: List[Int]): List[Int] = {
    val l = new ListBuffer[Int]()
    for (a <- arr.indices) {
      for (b <- 1 to num) {
        l += arr.apply(a)
      }
    }
    l.toList
  }
  1. 它可以写入不可变的吗?
  2. 无法使用递归
  3. 谢谢

2 个答案:

答案 0 :(得分:2)

Cat skinning one-liner

def listReplication(num: Int, arr: List[Int]):List[Int] = 
  arr.flatMap(a=>List.fill(num)(a))

答案 1 :(得分:0)

您可以使用for { ... } yield syntax遍历任何集合(或集合的笛卡尔积)并生成一个没有可变数据的新集合:

def listReplication(num: Int, arr: List[Int]): List[Int] = {
  for {
    a <- arr
    b <- 1 to num
  } yield a
}