我的代码现在有速度瓶颈。以下函数比较两个数组(位置和大小)并生成一个小于大小的新位置元素数组。这在O(n)时间内运行,但被多次调用。无论如何我还能为这个非常具体的案例做得更好吗?
代码:
function findValidDimensions(positions, sizes) {
var forwardDimensions = [];
var backwardDimensions = [];
for (var i = 0; i < sizes.length; i++) {
if (positions[i] < sizes[i]) {
forwardDimensions.push(i);
}
if (positions[i] > 1) {
backwardDimensions.push(i);
}
}
// we can go forward or backward
return {
"forward": forwardDimensions,
"backward": backwardDimensions
}
}
答案 0 :(得分:1)
除非有元素你可以避免看(从你的备用说明,听起来不太可能),查看 n 元素将花费O(n)时间。
答案 1 :(得分:0)
正如我所知,如果你使用一个大数组,你的方法的共谋很大,最好的搜索模式是堆或B树:)
一些参考: