javascript - 什么是获得排序数组中连续元素之间最大差异的最佳解决方案

标签 javascript node.js

如果有一个数组 让 arr = [7,1,4,3,8],结果应该是 3,这是 4 和 7 之间的最大差值。

同样,对于 let arr2 = [5,5,5,7,4],输出为 2(介于 5 和 7 之间),对于 let arr3 = [6,3, 2,5,9] 是 3(介于 6 和 9 之间)。

找出最大差异的最佳优化解决方案是什么。

我的方法是对数组进行排序并找出连续元素之间的差异,然后使用 Math.max(...differenceValues) 找到最大值

PS:我不是在寻找数组中最大值和最小值之间的差异。当您在 x 轴上绘制图形时,上述问题很有意义。

最佳答案

这是一个使用 reduce 的例子:

let arr = [7,1,4,3,8];

const max = arr.sort((a,b) => a-b)
               .reduce((result,currentValue,index) => {
                 if(result < arr[index + 1] - currentValue) {
                     return arr[index + 1] - currentValue
                 }
                 return result
               }, 0);

console.log(max);

类似,但使用 mapMath.max

let arr = [7,1,4,3,8];

const max2 = Math.max(...arr.sort((a,b) => a-b)
                .map((v, i) => (++i < arr.length) ? Math.abs(v - arr[i]) : 0));
                
console.log(max2);

关于javascript - 什么是获得排序数组中连续元素之间最大差异的最佳解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58190748/

相关文章:

javascript - 尝试访问上传到 s3 存储桶的文件时,lambda 中的访问被拒绝

java - Java String getBytes ISO_8859_1 的 Node.js 等效项

javascript - Internet Explorer 弹出消息在 Windows 10 中被 chop

javascript - ZingChart如何获取所有的标签

javascript - 在 STRUCTR 页面上的 Javascript 脚本中使用 ES6 模板文字

node.js - Mongoose 模式 setter 覆盖函数未被调用

node.js - 使用 Redis 和 Socket.io 进行用户身份验证

javascript - 将 knexnest 调用拉出到其自己的文件中以防止重复

javascript - 加载的 div Accordion 在窗口而不是容器 div 中打开

javascript - Angular JS 使用 ng-show 隐藏 Jquery Multiselect 的某些选项