LeetCode - 简单 - 最小绝对差
/**
* @param {number[]} arr
* @return {number[][]}
*/
var minimumAbsDifference = function (arr) {
if (arr.length === 2) {
if (arr[0] > arr[1]) {
return [[arr[1], arr[0]]];
}
return [arr];
}
arr.sort((prev, curt) => {
return prev - curt;
});
// return arr;
// console.log(arr);
let ans = [];
let t = arr[1] - arr[0];
let i = 0;
while (i < arr.length - 1) {
if (arr[i + 1] - arr[i] === t) {
ans.push([arr[i], arr[i + 1]]);
}
if (arr[i + 1] - arr[i] < t) {
t = arr[i+1] - arr[i];
ans = [];
ans.push([arr[i], arr[i + 1]]);
}
i++;
}
return ans;
};
思路
- 排除特殊情况arr.length===2,此时只有一种差值,将arr[0],arr[1]比对后根据题意返回即可
- 将arr排序
- 遍历排序后的arr,遍历过程中不断寻找最小的差值,如果找到更小的差值则刷新数组ans和差值t并将相应的结果放入ans中
ps.感觉自己知识储备不够,决定先好好学习一下再继续刷,不然每道题都要看题解也太不中了