天天看点

python-leetcode-1200. 最小绝对差

题目描述:

给你个整数数组 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)]