您的位置:首页 > 其它

【leetCode】Maximum Gap

2016-09-17 14:33 274 查看
题意:给定一个数组,返回排序之后的相邻元素差的最大值。在o(n)的时间和空间复杂度完成

思路:二进制的拓扑排序。两个桶,一个是0,一个是1,从低位开始排,32次(一个月前给小孩子讲过)

代码如下:

int maximumGap(vector<int>& nums) {
vector<int> zeroes;
vector<int> ones;
int i,j,k,size=nums.size();
for(i=0;i<32;i++)
{
for(j=0;j<size;j++)
{
if(((nums[j]>>i)&1)==0) zeroes.push_back(nums[j]);
else ones.push_back(nums[j]);
}
nums.clear();
for(j=0;j<zeroes.size();j++) nums.push_back(zeroes[j]);
for(j=0;j<ones.size();j++) nums.push_back(ones[j]);
zeroes.clear();
ones.clear();
}
k=0;
for(i=1;i<size;i++) k=max(k,nums[i]-nums[i-1]);
return k;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  拓扑排序