Skip to content
loading...

re: Scala Daily Coding Problem #002 VIEW POST

TOP OF THREAD FULL DISCUSSION
re: There's a straightforward linear-time algorithm that solves this without division -- compute the cumulative products from the left, and from the ri...
 

Smart! You can avoid calculating and then removing that extra element by calling init and tail before you scan:

scala> arr.scanLeft(1)(_ * _).init
res30: Array[Int] = Array(1, 1, 2, 6, 24)

scala> arr.scanRight(1)(_ * _).tail
res31: Array[Int] = Array(120, 60, 20, 5, 1)

scala> arr.init.scanLeft(1)(_ * _)
res32: Array[Int] = Array(1, 1, 2, 6, 24)

scala> arr.tail.scanRight(1)(_ * _)
res33: Array[Int] = Array(120, 60, 20, 5, 1)
code of conduct - report abuse