leetcode 1200
2026/6/30 9:38:24 网站建设 项目流程

1200: 最小绝对差

思路:排序后,只需考虑相邻元素之差

把 arr 排序后,最小绝对差只能来自相邻元素(不相邻的元素之差更大)。

遍历 arr 中的相邻元素 (x,y),设绝对差为 diff=y−x,当前最小绝对差为 minDiff。

  • 如果 diff<minDiff,那么更新 minDiff 为 diff,更新答案为 [[x,y]]。
  • 如果 diff=minDiff,那么把 [x,y] 添加到答案中。
vector<vector<int>> ans; ans={{x,y}}; ans.push_back({x,y});
  • 最外层{}给最外层的vector<vector<int>>初始化;

  • 内层{x, y}给里面的第一个vector<int>初始化。

如果想再追加别的对,只要继续ans.push_back({a, b});即可。

class Solution { public: vector<vector<int>> minimumAbsDifference(vector<int>& arr) { int n=arr.size(),min_diff=INT_MAX; ranges::sort(arr); vector<vector<int>> ans; for(int i=1;i<n;i++){ int x=arr[i-1],y=arr[i]; int diff=y-x; if(diff<min_diff){ min_diff=diff; ans={{x,y}}; } else if(diff==min_diff) ans.push_back({x,y}); } return ans; } };

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询