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

【1200. 最小絕對差】

2022-07-04 20:56: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://yzsam.com/2022/185/202207041936120104.html