最小绝对差-leetcode1200

class Solution {
    
    
    public List<List<Integer>> minimumAbsDifference(int[] arr) {
    
    
        int length = arr.length;
        List<List<Integer>> lists = new ArrayList<>();
        Arrays.sort(arr);
        /**
         * 数组长度大于2 先加入List
         */
        int val = Math.abs(arr[0] - arr[1]); // 用于保存最小值
        List<Integer> listInit = new ArrayList<>();
        listInit.add(arr[0]);
        listInit.add(arr[1]);
        lists.add(listInit);

        for (int i = 1; i < length - 1; i++) {
    
    
            if (val == (Math.abs(arr[i] - arr[i + 1]))) {
    
     // 相等时持续加入List
                List<Integer> listAdd = new ArrayList<>();
                listAdd.add(arr[i]);
                listAdd.add(arr[i + 1]);
                lists.add(listAdd);
            } else if (val > (Math.abs(arr[i] - arr[i + 1]))) {
    
     // 小于val时清空,重新赋值
                val = (Math.abs(arr[i] - arr[i + 1]));
                lists.clear();
                List<Integer> listAdd = new ArrayList<>();
                listAdd.add(arr[i]);
                listAdd.add(arr[i + 1]);
                lists.add(listAdd);
            } else {
    
    
                continue; // 指针后移
            }
        }
        return lists;
    }
}

猜你喜欢

转载自blog.csdn.net/for62/article/details/108015834