在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 ]