首页 > 解决方案 > 找到数组中所有对的最小差的总和

问题描述

假设输入数组是偶数长度,我想找到所有最近邻对之间的差异并将它们求和。

我现在有这个代码,但它只给出了一对的最小差异。我该如何实现这一目标?所以取出已经相加的对,并与其余的对一起计算。

 var lowestDiff = Infinity;
arr.sort((a, b) => a - b);
for (var i = 0; i < arr.length - 1; i++) {
    lowestDiff = Math.min(lowestDiff, Math.abs(arr[i] - arr[i + 1]));
}
   console.log(lowestDiff);

例如,如果输入是:[6,2,3,6],输出将是:1,因为 6 对与 6 和 2 对与 3

所以本质上我想将一个元素与另一个最接近它们的元素配对,并获得这种差异。并将它们相加。

标签: javascriptarrayssumdifference

解决方案


因为您需要从偶数长度数组中找到最小差异对的总和。需要注意的一件事这里是-:对给定数组进行排序后,最接近的对将彼此相邻 所以,我认为下面的代码应该可以工作

function min_difference(arr)
{
       arr.sort(function(a, b) {
          return a - b;
                });
       let ans=0;
       for (let i=1;i<arr.length;i+=2)
      {
          ans+=(arr[i]-arr[i-1]);
      }
       return ans;
}
var arr=[2,2,2,2];
console.log(min_difference(arr));


推荐阅读