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

164 Maximum Gap 最大间距

时间:2018-04-06 19:31:20      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:线性   logs   rip   int   maximum   desc   ble   空间复杂度   highlight   

给定一个无序的数组,找出数组在排序后相邻的元素之间最大的差值。
尽量尝试在线性时间和空间复杂度情况下解决此问题。
若数组元素个数少于2,则返回0。
假定所有的元素都是非负整数且范围在32位有符号整数范围内。

详见:https://leetcode.com/problems/maximum-gap/description/

class Solution {
public:
    int maximumGap(vector<int> &nums) {
        int n=nums.size();
        if (n==0||nums.empty())
        {
            return 0;
        }
        int mx = INT_MIN, mn = INT_MAX;
        for (int val : nums) 
        {
            mx = max(mx, val);
            mn = min(mn, val);
        }
        int size = (mx - mn) / n + 1;
        int bucket_nums = (mx - mn) / size + 1;
        vector<int> bucket_min(bucket_nums, INT_MAX);
        vector<int> bucket_max(bucket_nums, INT_MIN);
        set<int> s;
        for (int val : nums)
        {
            int idx = (val - mn) / size;
            bucket_min[idx] = min(bucket_min[idx], val);
            bucket_max[idx] = max(bucket_max[idx], val);
            s.insert(idx);
        }
        int pre = 0, res = 0;
        for (int i = 1; i < n; ++i)
        {
            if (!s.count(i))
            {
                continue;
            }
            res = max(res, bucket_min[i] - bucket_max[pre]);
            pre = i;
        }
        return res;
    }
};

 参考:https://www.cnblogs.com/grandyang/p/4234970.html

164 Maximum Gap 最大间距

标签:线性   logs   rip   int   maximum   desc   ble   空间复杂度   highlight   

原文地址:https://www.cnblogs.com/xidian2014/p/8728428.html

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