码迷,mamicode.com
首页 > 其他好文 > 详细

Maximum Gap

时间:2016-10-12 11:41:07      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

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.

 

class Solution{
public:
    int maximumGap(vector<int>& nums){
        int n = nums.size();
        if( n < 2) return 0;
        
        int maxVal = *max_element(nums.begin(),nums.end());
        int minVal = *min_element(nums.begin(),nums.end());
        if( maxVal == minVal) return 0;
        
        int gap = int((maxVal-minVal)/n+1);
        vector<int> maxofBucket(n,INT_MIN);
        vector<int> minofBucket(n,INT_MAX);

        for(int i=0;i<n;i++){
            int bucketId = int((nums[i]-minVal)/gap);
            maxofBucket[bucketId] = max(nums[i],maxofBucket[bucketId]);
            minofBucket[bucketId] = min(nums[i],minofBucket[bucketId]);
        }

        int preMax = maxofBucket[0];
        int res = INT_MIN;
        for(int i=1;i<n;i++){
            if(minofBucket[i] != INT_MAX){
                res = max(res,minofBucket[i]-preMax);
                preMax = maxofBucket[i];
            }
        }
        return res;
    }
};

 

Maximum Gap

标签:

原文地址:http://www.cnblogs.com/wxquare/p/5951823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!