首页 > 其他 > 详细

164 Maximum Gap 最大间距

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

给定一个无序的数组,找出数组在排序后相邻的元素之间最大的差值。
尽量尝试在线性时间和空间复杂度情况下解决此问题。
若数组元素个数少于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 最大间距

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!