5197.最小绝对差 Java 解决方案
题目描述:给你个整数数组 arr,其中每个元素都不相同。
请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
示例1:
输入:arr = [3,8,-10,23,19,-4,-14,27]
输出:[[-14,-10],[19,23],[23,27]]
示例2:
输入:arr = [1,3,6,10,15]
输出:[[1,3]]
class Solution {
public List<List<Integer>> minimumAbsDifference(int[] arr) {
List<List<Integer>> L = new ArrayList<>();
int val = Integer.MAX_VALUE;
Arrays.sort(arr);
for(int i = 0;i < arr.length-1;i++) {
if(Math.abs(arr[i]-arr[i+1]) < val) {
val = Math.abs(arr[i]-arr[i+1]);
}
}
for(int i = 0;i < arr.length-1;i++) {
if(Math.abs(arr[i]-arr[i+1]) == val) {
List<Integer> l = new ArrayList<Integer>();
l.add(arr[i]);
l.add(arr[i+1]);
L.add(l);
}
}
return L;
}
}
注意:在对排序后的数组进行处理时,不用考虑间隔索引值的数组元素的差值是否满足题目描述(数组是有序的)。