【发布时间】:2020-03-13 18:22:58
【问题描述】:
我有兴趣学习如何使用 foldLeft 函数在 scala 中实现 Kadane(最大子数组和)算法。我在堆栈溢出时运行了this 示例,但是我不确定我是否理解该算法的确切作用。算法是这样的:
someArray.foldLeft(0 -> 0) {
case ((maxUpToHere, maxSoFar), n) => val maxEndingHere = 0 max maxUpToHere + n
maxEndingHere -> (maxEndingHere max maxSoFar)
}._2
{} 中包含的内容是需要应用于每个元素的 lambda 函数吗?还有这条线究竟做了什么maxEndingHere -> (maxEndingHere max maxSoFar)?为什么括号中的括号用空格分隔?感谢您的帮助,如果我的问题太无知,我很抱歉,但我是 Scala 新手
【问题讨论】:
标签: scala data-structures sub-array foldleft kadanes-algorithm