Note:
因为没有重复的元素,所以先给数组排序,然后每两个一组判断他俩差的绝对值,如果出现更小的了,就把答案数组清空,放入当前的组合,然后更新一下最小值
或者等于最小值,那就直接扔进答案数组里,否则就两个指针往后移动
代码如下:
class Solution {
public:
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
vector<vector<int>> ans;
int minNum = INT_MAX;
sort(arr.begin(), arr.end());
for(int i = 0, j = 1; j < arr.size(); i ++, j ++){
if(abs(arr[i] - arr[j]) < minNum){
ans.clear();
ans.push_back({min(arr[i], arr[j]), max(arr[i], arr[j])});
minNum = abs(arr[i] - arr[j]);
}else if(abs(arr[i] - arr[j]) == minNum)
ans.push_back({min(arr[i], arr[j]), max(arr[i], arr[j])});
}
return ans;
}
};