【题目】
给你个整数数组 arr,其中每个元素都 不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
来源:leetcode
链接:https://leetcode-cn.com/problems/minimum-absolute-difference/
【示例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]]
【代码】暴力
class Solution {
public:
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
vector<vector<int>> rs;
sort(arr.begin(),arr.end());
int vlen=arr.size(),minlen=9999999;
for(int i=1;i<vlen;i++)
minlen=min(minlen,arr[i]-arr[i-1]);
for(int i=1;i<vlen;i++){
vector<int> v;
if(minlen==arr[i]-arr[i-1]){
v.push_back(arr[i-1]);
v.push_back(arr[i]);
}
if(v.size())
rs.push_back(v);
}
return rs;
}
};
【化简】
class Solution {
public:
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
vector<vector<int>> rs;
sort(arr.begin(),arr.end());
int vlen=arr.size(),minlen=9999999;
for(int i=1;i<vlen;i++)
minlen=min(minlen,arr[i]-arr[i-1]);
for(int i=1;i<vlen;i++)
if(minlen==arr[i]-arr[i-1])
rs.push_back({arr[i-1],arr[i]});
return rs;
}
};