题目来源
题目描述
题目解析
先排序
找出最小差值
根据最小差值找到每一对
要注意,最小差值一定是相邻的两个元素~~
class Solution {
public static List<List<Integer>> minimumAbsDifference(int[] arr) {
List<List<Integer>> ans = new ArrayList<>();
Arrays.sort(arr);
int min = Integer.MAX_VALUE;
for (int i = 1; i < arr.length; i++){
List<Integer> zz = new ArrayList<>(); // 一定要放在里面
int temp = arr[i] - arr[i-1];
if (min > temp){ // 现在的更小
ans.clear(); // 把之前的清楚掉
zz.add(arr[i-1]);
zz.add(arr[i]);
ans.add(zz); // 应该是指向地址
min = temp;
}else if (min == temp){
zz.add(arr[i-1]);
zz.add(arr[i]);
ans.add(zz);
}
}
return ans;
}
}
优化
public static List<List<Integer>> minimumAbsDifference(int[] arr) {
List<List<Integer>> ans = new ArrayList<>();
Arrays.sort(arr);
int min = Integer.MAX_VALUE;
for (int i = 1; i < arr.length; i++){
int temp = arr[i] - arr[i-1];
if (min > temp){ // 现在的更小
ans.clear(); // 把之前的清楚掉
ans.add(Arrays.asList(arr[i-1] , arr[i])); // 应该是指向地址
min = temp; // 按照升序返回
}else if (min == temp){
ans.add(Arrays.asList( arr[i-1], arr[i])); //asList比add更快
}
}
return ans;
}