S0r*_*rin 10 functional-programming scala kadanes-algorithm
有没有人在功能样式中完成Kadane算法的Scala实现?
Hei*_*ger 17
那这个呢:
numbers.scanLeft(0)((acc, n) => math.max(0, acc + n)).max
Run Code Online (Sandbox Code Playgroud)
我更喜欢扫描解决方案的折叠解决方案 - 尽管后者确实很优雅.无论如何,
numbers.foldLeft(0 -> 0) {
case ((maxUpToHere, maxSoFar), n) =>
val maxEndingHere = 0 max maxUpToHere + n
maxEndingHere -> (maxEndingHere max maxSoFar)
}._2
Run Code Online (Sandbox Code Playgroud)