class Solution { public: int maximumGap(vector<int>& nums) { if(nums.size()<2) return 0; vector<vector<int> > preBucket(10); vector<vector<int> > curBucket(10); vector<int> curNums; for(int i=0; i<32; i++){ curNums.clear(); if(i==0) curNums=nums; else{ for(int j=0; j<10; j++){ for(int k=0; k<preBucket[j].size(); k++) curNums.push_back(preBucket[j][k]); } } for(int j=0; j<curNums.size(); j++){ int d = (curNums[j]/int(pow(10, i)))%10; curBucket[d].push_back(curNums[j]); } preBucket=curBucket; curBucket.clear(); curBucket.resize(10); } int res=0; for(int j=1; j<curNums.size(); j++) res=max(res, curNums[j]-curNums[j-1]); return res; } };