Skip to content

[LeetCode] 1200. Minimum Absolute Difference #1200

Open
@grandyang

Description

@grandyang

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]]

Constraints:

  • 2 <= arr.length <= 10^5
  • -10^6 <= arr[i] <= 10^6

这道题给了一个没有重复数字的整型数组,现在让找出差的绝对值最小的数对儿。既然是 Easy 的身价,那么就没有太 Fancy 的解法,为了更方便的找出差的绝对值最小的数对儿,先给数组进行排序,这样最小差值一定会出现在相邻的两个数字之间。接下来就是遍历所有相邻的两个数字,维护一个最小值 mn,若当前差值 diff 小于等于 mn,则进行进一步操作,二者中唯一不同的是当 diff 小于 mn 时,结果 res 需��清空。然后将 mn 更新为 diff,并把当前数组对儿加入到结果 res 中即可,参见代码如下:

class Solution {
public:
    vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
        vector<vector<int>> res;
        int n = arr.size(), mn = INT_MAX;
        sort(arr.begin(), arr.end());
        for (int i = 1; i < n; ++i) {
            int diff = arr[i] - arr[i - 1];
            if (diff <= mn) {
                if (diff < mn) res.clear();
                mn = diff;
                res.push_back({arr[i - 1], arr[i]});   
            }
        }
        return res;
    }
};

Github 同步地址:

#1200

参考资料:

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

https://leetcode.com/problems/minimum-absolute-difference/discuss/388289/Java-sorting-beats-100-explained

LeetCode All in One 题目讲解汇总(持续更新中...)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions