# 1200-minimum-absolute-difference Try it on leetcode ## Description

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

 

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:

## Solution(Python) ```Python class Solution: def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]: return self.CountingsortedSolution(arr) # Time Complexity: O(n^2) # Space COmplexity: O(1) def naiveSolution(self, arr: List[int]) -> List[List[int]]: n = len(arr) result = [] min_diff = inf for i in range(n): pair = (i, i) for j in range(i+1, n): if i == j: continue if arr[j]-arr[i] < min_diff: min_diff = arr[j]-arr[i] for i in range(n): for j in range(i+1, n): if i == j: continue if arr[j]-arr[i] == min_diff: result.append((arr[i], arr[j])) return result # Time Complexity: O(n^logn) # Space COmplexity: O(1) def sortedSolution(self, arr: List[int]) -> List[List[int]]: arr.sort() result = [] mindiff = inf n = len(arr) for i in range(1, n): curdiff = arr[i] - arr[i-1] if curdiff < mindiff: mindiff = curdiff result = [[arr[i-1], arr[i]]] elif curdiff == mindiff: result.append([arr[i-1], arr[i]]) return result # Time Complexity: O(n+M) # Space COmplexity: O(M) def CountingsortedSolution(self, arr: List[int]) -> List[List[int]]: arr = self.countingSort(arr) result = [] mindiff = inf n = len(arr) for i in range(1, n): curdiff = arr[i] - arr[i-1] if curdiff < mindiff: mindiff = curdiff result = [[arr[i-1], arr[i]]] elif curdiff == mindiff: result.append([arr[i-1], arr[i]]) return result def countingSort(self, nums): min_, max_ = min(nums), max(nums) count = [0] * (max_-min_+1) for num in nums: count[num-min_] += 1 result = [] for i, c in enumerate(count): result.extend([i+min_]*c) return result ```