天天看点

1200. Minimum Absolute Difference*

1200. Minimum Absolute Difference*

​​https://leetcode.com/problems/minimum-absolute-difference/​​

题目描述

Given an array of distinct integers ​

​arr​

​, find all pairs of elements with the minimum absolute difference of any two elements.

Return a list of pairs in ascending order(with respect to pairs), each pair ​

​[a, b]​

​ follows

  • ​a, b​

    ​​ are from​

    ​arr​

  • ​a < b​

  • ​b - a​

    ​​ equals to the minimum absolute difference of any two elements in​

    ​arr​

Example 1:

Input: arr = [4,2,1,3]
Output: [[1,2],[2,3],[3,4]]
Explanation: The minimum absolute difference is 1. List all pairs with difference equal to 1 in ascending order.      

Example 2:

Input: arr = [1,3,6,10,15]
Output: [[1,3]]      

Example 3:

Input: arr = [3,8,-10,23,19,-4,-14,27]
Output: [[-14,-10],[19,23],[23,27]]      
  • ​2 <= arr.length <= 10^5​

  • ​-10^6 <= arr[i] <= 10^6​

C++ 实现 1

class Solution {
public:
    vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
        std::sort(arr.begin(), arr.end());
        int min_val = INT32_MAX;
        for (int i = 1; i < arr.size(); ++ i)
            min_val = std::min(min_val,
                              std::abs(arr[i] - arr[i - 1]));
        vector<vector<int>> res;
        for (int i = 0; i < arr.size() - 1; ++ i) {
            if (std::abs(arr[i] - arr[i + 1]) == min_val)
                res.push_back({arr[i], arr[i + 1]});
        }
        return res;
    }
};