05 August 2008
给一个整数数组 arr,其中每个元素都不相同。找到所有具有最小绝对差的元素对(多个),并且按升序的顺序返回。
先排序找出最小差值,然后遍历插入list即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public List<List<Integer>> minimumAbsDifference(int[] arr) {
List<List<Integer>> result = new ArrayList<>();
Arrays.sort(arr);
int minGap = Math.abs(arr[1] - arr[0]);
for (int i = 1; i < arr.length; ++i) {
minGap = Math.min(minGap, Math.abs(arr[i] - arr[i - 1]));
}
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] + minGap == arr[j + 1]) {
List<Integer> row = new ArrayList<Integer>();
row.add(arr[j]);
row.add(arr[j + 1]);
result.add(row);
}
}
return result;
}
}