Maximum Gap

Posted wxquare的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maximum Gap相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

Maximum Gap

164. Maximum Gap

164. Maximum Gap

164. Maximum Gap

leetcode 桶排序Maximum Gap

刷题-LeetCode164 Maximum Gap