题目描述: 给你个整数数组 arr,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
示例 1: 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[3,4]] 示例 2: 输入:arr = [1,3,6,10,15] 输出:[[1,3]]
解法一:
class Solution(object):
def minimumAbsDifference(self, arr):
arr = sorted(arr)
delta = [arr[i+1]-arr[i] for i in range(len(arr)-1)]
min_delta = min(delta)
res = [[arr[j], arr[j+1]] for j in range(len(delta)) if delta[j] == min_delta]
return res
解法二:
class Solution:
def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:
s = set(arr)
res = []
d = 0
while not res:
d += 1
res = [e for e in s if e + d in s]
return [[e, e+d] for e in sorted(res)]