LeetCode - 简单 - 最小绝对差
image.png

  1. /**
  2. * @param {number[]} arr
  3. * @return {number[][]}
  4. */
  5. var minimumAbsDifference = function (arr) {
  6. if (arr.length === 2) {
  7. if (arr[0] > arr[1]) {
  8. return [[arr[1], arr[0]]];
  9. }
  10. return [arr];
  11. }
  12. arr.sort((prev, curt) => {
  13. return prev - curt;
  14. });
  15. // return arr;
  16. // console.log(arr);
  17. let ans = [];
  18. let t = arr[1] - arr[0];
  19. let i = 0;
  20. while (i < arr.length - 1) {
  21. if (arr[i + 1] - arr[i] === t) {
  22. ans.push([arr[i], arr[i + 1]]);
  23. }
  24. if (arr[i + 1] - arr[i] < t) {
  25. t = arr[i+1] - arr[i];
  26. ans = [];
  27. ans.push([arr[i], arr[i + 1]]);
  28. }
  29. i++;
  30. }
  31. return ans;
  32. };

思路

  1. 排除特殊情况arr.length===2,此时只有一种差值,将arr[0],arr[1]比对后根据题意返回即可
  2. 将arr排序
  3. 遍历排序后的arr,遍历过程中不断寻找最小的差值,如果找到更小的差值则刷新数组ans和差值t并将相应的结果放入ans中

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