【发布时间】:2019-04-28 04:55:49
【问题描述】:
我正在尝试解决一个程序,以使用 javascript 查找数组中任何一对元素之间的最小绝对差。输入将参数作为数组元素。输出返回数组中任意两个元素之间的最小绝对差
例如输入为[1,2,4],输出为1
问题的详细描述在this链接中给出。
在我的代码中,当给出包含 1000 个元素的输入数组时,它会编译并显示因超时而终止,但它适用于较小尺寸的输入数组
我认为错误来自性能和复杂性的问题。我研究了问题,但我不知道如何进行进一步的步骤
我的代码:
var arr = [..] //array containing 1000 elements
var count = minimumAbsoluteDifference(arr);
console.log(count);
function minimumAbsoluteDifference(arr) {
var diff = []; var index = 0;
arr.sort((a, b) => { return (a - b); });
for (var i = 0; i < arr.length-1; i++){
for (var j = i+1; j < arr.length; j++){
if (i != j) {
diff[index] = Math.abs(arr[i] - arr[j]);
console.log("index", i, j);
index++;
}
}
}
var minAbsoluteDifference = Math.min(...diff);
return minAbsoluteDifference;
}
【问题讨论】:
-
由于您的数组已经排序,您只需要找到 i 和 i+1 之间的最小差异,而不是 i 以及从 i+1 到 len 的所有差异。
diff[index] = Math.abs(arr[i] - arr[i+1]);
标签: javascript html arrays algorithm