当前位置:网站首页>【1200. 最小绝对差】

【1200. 最小绝对差】

2022-07-04 19:36:00 千北@

来源:力扣(LeetCode)

描述:

给你个整数数组 arr,其中每个元素都 不相同

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

示例 1:

输入:arr = [4,2,1,3]
输出:[[1,2],[2,3],[3,4]]

示例 2:

输入:arr = [1,3,6,10,15]
输出:[[1,3]]

示例 3:

输入:arr = [3,8,-10,23,19,-4,-14,27]
输出:[[-14,-10],[19,23],[23,27]]

提示:

  • 2 <= arr.length <= 105
  • -106 <= arr[i] <= 106

方法:排序 + 一次遍历

思路与算法

1
代码:

class Solution {
    
public:
    vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
    
        int n = arr.size();
        sort(arr.begin(), arr.end());

        int best = INT_MAX;
        vector<vector<int>> ans;
        for (int i = 0; i < n - 1; ++i) {
    
            if (int delta = arr[i + 1] - arr[i]; delta < best) {
    
                best = delta;
                ans = {
    {
    arr[i], arr[i + 1]}};
            }
            else if (delta == best) {
    
                ans.emplace_back(initializer_list<int>{
    arr[i], arr[i + 1]});
            }
        }

        return ans;
    }
};

执行用时:52 ms, 在所有 C++ 提交中击败了98.35%的用户
内存消耗:31.3 MB, 在所有 C++ 提交中击败了86.32%的用户1
author:LeetCode-Solution

原网站

版权声明
本文为[千北@]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Sugar_wolf/article/details/125596887