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.感觉自己知识储备不够,决定先好好学习一下再继续刷,不然每道题都要看题解也太不中了