【发布时间】:2020-06-26 15:04:22
【问题描述】:
我正在处理 codewars 中的一个问题,我的代码可以运行,但它超时了。我尝试了递归和循环,但在简单的测试中都超时并以相似的时间计算。在我的新手能力范围内,我也不知道如何进一步优化。
递归:
def recursive(p: Int, n: Int, l: List[Int], x: List[Int]): List[Int] = {
if (n == p)
x
else
recursive(p, n + 1, l, (l.drop(p - n - 1).sum :: x))
}
def partsSums(l: List[Int]): List[Int] = {
val a = l.length
recursive(a, 0, l, List(0))
}
循环:
def partsSums(l: List[Int]): List[Int] = {
val g = l.length
var x = List(0)
var n = 0
while (n != g) {
x = (l.drop(g - n - 1).sum) :: x
n += 1
}
x
}
【问题讨论】:
-
l.scanRight(0)(_ + _)够了吗? -
没有挑战的链接或描述,很难评估你想要达到的目标,但话虽如此,当你的代码超时时,10 次中有 9 次可能无法优化您的出路。通常情况下,您必须重新考虑您的算法。
-
@esse 如何让堆栈确认您已解决?
-
@MatthewWyatt 我添加了一个答案,如果适合你,你可以接受。
标签: scala loops recursion optimization