javascript - 找到数组中所有对的最小差的总和
问题描述
假设输入数组是偶数长度,我想找到所有最近邻对之间的差异并将它们求和。
我现在有这个代码,但它只给出了一对的最小差异。我该如何实现这一目标?所以取出已经相加的对,并与其余的对一起计算。
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
所以本质上我想将一个元素与另一个最接近它们的元素配对,并获得这种差异。并将它们相加。
解决方案
因为您需要从偶数长度数组中找到最小差异对的总和。需要注意的一件事:这里是-:对给定数组进行排序后,最接近的对将彼此相邻 所以,我认为下面的代码应该可以工作
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));
推荐阅读
- elixir - 将列表转换为以前两个字母为索引的映射
- python - Python子进程调用()不执行shell命令
- r - 启动 RStudio 时如何删除包的自动加载?
- angular - 模板文件中只允许使用数组和可迭代对象。异常行为
- c++ - 在 C++ 中使用子级列表的通用树中添加一个节点并查找两个给定节点之间的路径成本
- python - 运行statsmodels马尔可夫回归时如何解决“参数不具有兼容的形状”
- python - 如何在特定目录(包括其子目录)中列出所有文件及其大小和创建日期?
- html - 用于响应式网格设计的更宽宽度的适当边距填充
- html - 为什么这个 CSS 动画在 IE 上不起作用?
- asp.net-core - ASP.NET Core 替代 ServerInfo.GetHtml()?