每日一题1200. 最小绝对差

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题1200. 最小绝对差相关的知识,希望对你有一定的参考价值。

1200. 最小绝对差
简单题
给你个整数数组 arr,其中每个元素都 不相同。

请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。

排序+模拟:
对 arr 进行排序,容易得知差值最小值必然发生在排序数组的相邻元素之间,此时我们可以通过遍历排序数组并使用变量 min 记录当前差值最小值来统计答案。

class Solution 
    public List<List<Integer>> minimumAbsDifference(int[] arr) 
        Arrays.sort(arr);
        List<List<Integer>> ans = new ArrayList<>();
        int n = arr.length, min = arr[1] - arr[0];
        for (int i = 0; i < n - 1; i++) 
            int cur = arr[i + 1] - arr[i];
            if (cur < min) 
                ans.clear();
                min = cur;
            
            if (cur == min) 
                List<Integer> temp = new ArrayList<>();
                temp.add(arr[i]); 
                temp.add(arr[i + 1]);
                ans.add(temp);
            
        
        return ans;
    

以上是关于每日一题1200. 最小绝对差的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:268.寻找旋转数组中的最小值

《LeetCode之每日一题》:266.查找和最小的 K 对数字

LeetCode 1200.最小绝对差

leetcode1200. 最小绝对差

每日一题1413. 逐步求和得到正数的最小值

每日一题907. 子数组的最小值之和