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
Ideas of solving problem
So when we do this, we’re going to arrange the array in ascending order.And then I’m going to compare the last one minus the last one.The one with the smallest difference will be added to the result array and will loop through to get the final answer. The time complexity is O(n), and the space complexity is O(n). The memory consumption is 7.3Mb.
Code
package main
import (
"fmt"
"math"
"sort"
)
func main(){
arr := [] int {4,2,1,3}
fmt.Println(minimumAbsDifference(arr))
}
func minimumAbsDifference(arr []int) [][]int {
min:=int(math.Pow10(6))
sort.Ints(arr)
res:=[][]int{}
for i:=0;i< len(arr)-1;i++{
if min>arr[i+1]-arr[i]{
res=[][]int{{arr[i],arr[i+1]}}
min=arr[i+1]-arr[i]
}else if min==arr[i+1]-arr[i]{
res= append(res, []int{arr[i],arr[i+1]})
}
}
return res
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-absolute-difference