在Node.JS中查找A和B之间的最短距离
这是解决此问题的最佳和最快的解决方案:在Node.JS中查找A和B之间的最短距离,node.js,shortest-path,Node.js,Shortest Path,这是解决此问题的最佳和最快的解决方案: 求A和B之间的最短距离,如果A和B在一个数组中,那么数组中有一个值列表,比如[4,8,9,10,100],我们需要找出该数组中两个值之间的最小间隙。如果为负,则使用绝对值。如果先对数组排序,则只需找到任意两个相邻元素之间的最小绝对值差即可 let data=[4,8,9,10100]; 函数findSmallDelta(数据){ data.sort(); 让minDelta=-1; for(设i=0;i
求A和B之间的最短距离,如果A和B在一个数组中,那么数组中有一个值列表,比如[4,8,9,10,100],我们需要找出该数组中两个值之间的最小间隙。如果为负,则使用绝对值。如果先对数组排序,则只需找到任意两个相邻元素之间的最小绝对值差即可
let data=[4,8,9,10100];
函数findSmallDelta(数据){
data.sort();
让minDelta=-1;
for(设i=0;i
- 对给定数组进行排序
- 找到排序数组中一对元素的最低差异
- 找出所有差异最小的配对
功能关闭IRS(arr){
让结果=[];
设minDiff=Number.MAX_值;
arr.sort((a,b)=>{
返回a-b;
});
//查找排序数组中一对元素的最小差值
for(设i=0;i{
返回a-b;
});
}
让inputArr=[4,8,9,10100];
console.log(closetPairs(inputArr));//[ 8, 9, 9, 10 ]
最佳”是什么意思?从你提问的措辞来看,似乎与“最快”不同。@kevin介于任意两个值之间还是任意两个连续值之间?@kevin-我只是好奇你为什么选择你所做的答案作为接受答案,因为它似乎比这个更复杂。
function closetPairs (arr) {
let result = [];
let minDiff = Number.MAX_VALUE;
arr.sort((a, b) => {
return a - b;
});
// find the lowest difference for a pair of elements in the sorted array
for (let i = 0; i < arr.length - 1; i++) {
let currDiff = arr[i + 1] - arr[i];
if (currDiff < minDiff) {
minDiff = currDiff;
}
}
// find all the pairs with lowest differnece
for (let j = 0; j < arr.length - 1; j++) {
let sortedEleDiff = arr[j + 1] - arr[j];
if (minDiff == sortedEleDiff) {
result.push(arr[j + 1], arr[j]);
}
}
return result.sort((a, b) => {
return a - b;
});
}
let inputArr = [4, 8, 9, 10, 100];
console.log(closetPairs(inputArr)); // [ 8, 9, 9, 10 ]