桶排序的思想
参考博文
class Solution {
public:
int maximumGap(vector<int>& nums) {
int tip=nums.size();
if (tip<2) return 0;
int minx=1e9;
int maxx=-1e9;
for (int i=0;i<tip;i++){
minx=min(nums[i],minx);
maxx=max(nums[i],maxx);
}
if (minx==maxx) return 0;
int maxbucket[tip+5];
int minbucket[tip+5];
for (int i=0;i<=tip;i++){
maxbucket[i]=-1e9;
minbucket[i]=1e9;
}
//桶的容量
int capacity;
//if ((maxx-minx)%(tip+1)==0) capacity = (maxx-minx)/(tip+1);
capacity = (maxx-minx)/(tip+1)+1;
for (int i=0;i<tip;i++){
int index=(nums[i]-minx)/capacity;
maxbucket[index]=max(maxbucket[index],nums[i]);
minbucket[index]=min(minbucket[index],nums[i]);
}
int pre=maxbucket[0];
int ans=0;
for (int i=1;i<=tip;i++){
if (maxbucket[i]!=-1e9){
ans=max(ans,minbucket[i]-pre);
pre=maxbucket[i];
}
}
return ans;
}
};