最小绝对差

给你个整数数组 arr,其中每个元素都 不相同。
请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
每对元素对 [a,b] 如下:
a , b 均为数组 arr 中的元素
a < b
b - a 等于 arr 中任意两个元素的最小绝对差

  • 输入:arr = [4,2,1,3]
  • 输出:[[1,2],[2,3],[3,4]]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let minimumAbsDifference = function(arr) {
let sortArr = arr.sort((a, b) => { return a - b }) //升序排列
let res = []
let cz = sortArr[1] - sortArr[0] //第一对相邻元素的差值
// 遍历相邻两个元素,计算差值
for (let i = 0; i < sortArr.length - 1; i++) {
if (cz > sortArr[i + 1] - sortArr[i]) {
cz = sortArr[i + 1] - sortArr[i]
res = []
res.push([sortArr[i], sortArr[i + 1]])
}
else if (cz === sortArr[i + 1] - sortArr[i]) {
res.push([sortArr[i], sortArr[i + 1]])
}
}
return res
};