Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[LeetCode] 1200. Minimum Absolute Difference #1200

Open
grandyang opened this issue May 30, 2019 · 0 comments
Open

[LeetCode] 1200. Minimum Absolute Difference #1200

grandyang opened this issue May 30, 2019 · 0 comments

Comments

@grandyang
Copy link
Owner

grandyang commented May 30, 2019

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 题目讲解汇总(持续更新中...)

@grandyang grandyang changed the title [LeetCode] 1200. Missing Problem [LeetCode] 1200. Minimum Absolute Difference Aug 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant