# LeetCode 1200. Minimum Absolute Difference

## Description

https://leetcode.com/problems/minimum-absolute-difference/

Given an array of distinct integers `arr`, find all pairs of elements with the minimum absolute difference of any two elements.

Return a list of pairs in ascending order(with respect to pairs), each pair `[a, b]` follows

• `a, b` are from `arr`
• `a < b`
• `b - a` equals to the minimum absolute difference of any two elements in `arr`

Example 1:

```Input: arr = [4,2,1,3]
Output: [[1,2],[2,3],[3,4]]
Explanation: The minimum absolute difference is 1. List all pairs with difference equal to 1 in ascending order.```

Example 2:

```Input: arr = [1,3,6,10,15]
Output: [[1,3]]
```

Example 3:

```Input: arr = [3,8,-10,23,19,-4,-14,27]
Output: [[-14,-10],[19,23],[23,27]]
```

Constraints:

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

## Explanation

Calculate pair distances and find those pairs with the minimum distance.

## Python Solution

``````class Solution:
def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:

arr = sorted(arr)

pair_distances = []

for i in range(0, len(arr)):
num1 = arr[i]

local_min_distance = sys.maxsize
for j in range(i + 1, len(arr)):
num2 = arr[j]
distance = abs(num2 - num1)

if distance > local_min_distance:
break
else:
local_min_distance = distance
pair_distances.append([num1, num2, distance])

distance_map = defaultdict(list)

min_distance = sys.maxsize
for pair_distance in pair_distances:
distance_map[pair_distance].append([pair_distance, pair_distance])
min_distance = min(min_distance, pair_distance)

return distance_map[min_distance]``````
• Time Complexity: O(N).
• Space Complexity: O(N).