【题目】
给你个整数数组 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 <= 10^5
-10^6 <= arr[i] <= 10^6
【代码】
class Solution {
public:
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
sort(arr.begin(),arr.end());
vector<int> diff;
vector<vector<int>> rs;
map<int,int> m_index;
for(int i=1;i<arr.size();i++){
diff.push_back(arr[i]-arr[i-1]);
m_index[i]=arr[i]-arr[i-1];
}
sort(diff.begin(),diff.end());
map<int, int>::iterator iter;
for(iter = m_index.begin(); iter != m_index.end(); iter++){
if(iter->second==diff[0]){
vector<int> temp;
temp.push_back(arr[iter->first-1]);
temp.push_back(arr[iter->first]);
rs.push_back(temp);
}
}
return rs;
}
};