GuilinDev

Lc1200

05 August 2008

1200. Minimum Absolute Difference

给一个整数数组 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;
    }
}