Given an unsorted array, find the maximum difference between the successive elements in its sorted form.
Try to solve it in linear time/space.
Return 0 if the array contains less than 2 elements.
You may assume all elements in the array are non-negative integers and fit in the 32-bit signed integer range.
// radix sort & lambda
class Solution {
public:
int maximumGap(vector<int> &num) {
for (unsigned bit = 0; bit < 31; bit++)
stable_partition(num.begin(), num.end(),
[bit](int x) {return !(x&(1<<bit));});
int gap = 0;
for (size_t i = 1; i < num.size(); i++)
gap = max(gap, num[i] - num[i - 1]);
return gap;
}
};