leetcode:sort:Maximum Gap(164)

来源:互联网 发布:下载宇龙汽修仿真软件 编辑:程序博客网 时间:2024/06/05 00:16

https://leetcode.com/problems/maximum-gap/


http://www.cnblogs.com/ganganloveu/p/4162290.html


class Solution {public:    int maximumGap(vector<int>& nums) {        if(nums.empty() || nums.size() == 1)            return 0;        int n = nums.size();        int minAll = *min_element(nums.begin(), nums.end());        int maxAll = *max_element(nums.begin(), nums.end());        // type conversion!!!        double gap = ((double)(maxAll - minAll)) / (n - 1);        // compute min and max element for each bucket        vector<int> minV(n-1, INT_MAX);        vector<int> maxV(n-1, INT_MIN);        for(int i = 0; i < n; i ++)        {            if(nums[i] != maxAll)            {// the bktId of maxAll will fall out of bucket range                int bktId = (int)((nums[i]-minAll)/gap);                minV[bktId] = min(minV[bktId], nums[i]);                maxV[bktId] = max(maxV[bktId], nums[i]);            }        }        int ret = 0;        int curMax = maxV[0];        for(int i = 1; i < n-1; i ++)        {            if(minV[i] != INT_MAX)            {                ret = max(ret, minV[i]-curMax);                curMax = maxV[i];            }        }        ret = max(ret, maxAll-curMax);        return ret;    }};
0 0
原创粉丝点击