「每日LeetCode」2022年7月4日

本文最后更新于:2023年3月19日 晚上

1200.最小绝对差

1200.最小绝对差

Category Difficulty Likes Dislikes
algorithms Easy (68.23%) 104 -

Tags
Companies
给你个整数数组 arr,其中每个元素都 不相同
请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。

示例 1:
输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[3,4]]
示例 2:
输入:arr = [1,3,6,10,15] 输出:[[1,3]]
示例 3:
输入:arr = [3,8,-10,23,19,-4,-14,27] 输出:[[-14,-10],[19,23],[23,27]]

提示:

  • 2 <= arr.length <= 10^5
  • -10^6 <= arr[i] <= 10^6

Discussion | Solution

思路

按题意模拟即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
* @lc app=leetcode.cn id=1200 lang=javascript
*
* [1200] 最小绝对差
*/

// @lc code=start
/**
* @param {number[]} arr
* @return {number[][]}
*/
var minimumAbsDifference = function (arr) {
arr.sort((a, b) => +a - +b);
let min = Math.abs(arr[1] - arr[0]),
prev = arr[0],
res = [];
const map = {};
for (let i = 1; i < arr.length; i++) {
const num = arr[i];
const gap = Math.abs(num - prev);

if (gap < min) {
min = gap;
res = [[prev, num]];
} else if (gap === min) {
res.push([prev, num]);
}

prev = num;
}
return res;
};
// @lc code=end