我想实现一个带有列表的函数,例如List(3,4,5)并返回列表,其中每个元素递增n例如List(3 + n,4 + n,5 + n) - 如何使用foldRight编写此函数以及它的时间复杂度
例如list1 = List(3,4,5) define func(list1,2)给出 - List(5,6,9)
答案 0 :(得分:5)
惯用法这是map
的用例:
List(3, 4, 5).map(_ + 2) == List(5, 6, 7)
但是,可以使用foldRight
:
List(3, 4, 5).foldRight(List.empty[Int]) { (n, acc) =>
(n + 2) :: acc
}
这将具有O(n)的时间复杂度。 foldRight
是线性操作,前置scala.collection.List
是常量时间。
答案 1 :(得分:-2)
不确定为什么要使用foldRight
这更适合映射,即
List(3,4,5).map(_+2) == List(5,6,7)