【发布时间】:2020-11-24 05:52:55
【问题描述】:
我在 CodeWars 上找到了一个任务,我设法解决了它,但是,提交后说:
执行超时:(12000 毫秒)
当我尝试测试函数通过时,但我猜它太慢了。 在你谴责我没有自己找到答案之前。我真的不关心提交它作为回复,但我不知道如何让它更快,这就是我在这里的原因。 这是函数:
const ls = [0, 1, 3, 6, 10]
const partsSums = (ls) => {
const sum = []
for(let i = 0, len = ls.length; i < len + 1; i++) {
let result = ls.slice(i).reduce( (accumulator, currentValue) => accumulator + currentValue, 0)
sum.push(result)
}
return sum
}
以下是说明:
让我们考虑这个例子(以一般格式编写的数组):
ls = [0, 1, 3, 6, 10]它的以下部分:
ls = [0, 1, 3, 6, 10] ls = [1, 3, 6, 10] ls = [3, 6, 10] ls = [6, 10] ls = [10] ls = []对应的总和是(放在一个列表中):[20, 20, 19, 16, 10, 0]
函数parts_sums(或其他语言的变体)将采用 作为参数列表 ls 并返回其部分总和的列表 上面定义的。
【问题讨论】:
-
其实你需要去这里codereview.stackexchange.com
-
@Ifaruki 我不同意。 CR 适用于工作但可以做得更好的代码。这个不起作用。它在执行时间内失败,这意味着它不满足要求。它有问题需要解决,这就是 SO 的意义所在。
-
@VLAZ:这太荒谬了。如果要相信 OP,则该代码有效。它只是需要改进,而不是修复。这就是代码审查的意义所在。
-
你能把 Codewars kata 的链接放上去吗?
-
@VLAZ Code Review 甚至还有time-limit-exceeded tag。
标签: javascript arrays function sum