【发布时间】:2019-05-01 15:38:20
【问题描述】:
我正在尝试提高函数的效率。它目前是二次的,我想让它成为对数。
当前函数的倒数第三行也让我有些困惑,我想澄清一下。
function solution(arr){
let result = 0
for ( let i = 0; i < arr.length; i++)
for (let j = 0; j < arr.length; j++)
if (arr[i] == arr[j])
result = Math.max(result, Math.abs(i - j));
return result;
}
我该如何解决这个问题?
【问题讨论】:
-
欢迎来到 Stackoverflow!请记住,SO 不是一个通用的帮助论坛,如果您有已经可以运行的代码,但您想改进/优化它,那么 SO 不是一个合适的地方。看看codereview.stackexchange.com,如果你想帮助改进一些有效的东西,而不是询问如何修复不起作用的代码(或者开始尝试自己重写这段代码,然后一旦你因为代码没有做什么而被卡住您认为应该这样做,请在此处询问)
-
这可以在线性时间内解决。
let j = i + 1确实已经大大提高了性能,线性时间你需要一个地图。 -
到底是什么让你感到困惑?
标签: javascript big-o logarithm quadratic