一. 题目
-
题目
给你个整数数组 arr,其中每个元素都 不相同。
请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 -
示例
二. 方法一
-
解题思路
- 先排序, 在比较相邻两个元素的差值
- 如果差值小于之前的最小值, 则更改最小值, 并清空之前的结果集, 同时把当前结果存入结果集
- 如果差值等于之前的最小值, 则把当前结果存入结果集
- 如果差值大于之前的最小值, 则跳过
- 返回最终的结果集即可
-
解题代码
def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]: arr.sort() min_size = 200001 result = [] for index in range(len(arr) - 1): if arr[index + 1] - arr[index] < min_size: min_size = arr[index + 1] - arr[index] result = [] result.append([arr[index], arr[index + 1]]) elif arr[index + 1] - arr[index] == min_size: result.append([arr[index], arr[index + 1]]) return result
-
分析
时间复杂度: O(nlogn)
空间复杂度: O(n)