zoukankan      html  css  js  c++  java
  • [LintCode] Maximum Gap 求最大间距

    Given an unsorted array, find the maximum difference between the successive elements in its sorted form.

    Return 0 if the array contains less than 2 elements.

     Notice

    You may assume all elements in the array are non-negative integers and fit in the 32-bit signed integer range.

    Example

    Given [1, 9, 2, 5], the sorted form of it is[1, 2, 5, 9], the maximum gap is between 5and 9 = 4.

    Challenge 

    Sort is easy but will cost O(nlogn) time. Try to solve it in linear time and space.

    LeetCode上的原题,请参见我之前的博客Maximum Gap

    class Solution {
    public:
        /**
         * @param nums: a vector of integers
         * @return: the maximum difference
         */
        int maximumGap(vector<int> nums) {
            if (nums.empty()) return 0;
            int mx = INT_MIN, mn = INT_MAX, n = nums.size();
            for (int d : nums) {
                mx = max(mx, d);
                mn = min(mn, d);
            }
            int size = (mx - mn) / n + 1;
            int bucket_num = (mx - mn) / size + 1;
            vector<int> bucket_min(bucket_num, INT_MAX);
            vector<int> bucket_max(bucket_num, INT_MIN);
            set<int> s;
            for (int d : nums) {
                int idx = (d - mn) / size;
                bucket_min[idx] = min(bucket_min[idx], d);
                bucket_max[idx] = max(bucket_max[idx], d);
                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;
        }
    };
  • 相关阅读:
    mall
    将UNICODE编码转换为中文
    460. LFU Cache
    957. Prison Cells After N Days
    455. Assign Cookies
    453. Minimum Moves to Equal Array Elements
    434. Number of Segments in a String
    1203. Sort Items by Groups Respecting Dependencies
    641. Design Circular Deque
    441. Arranging Coins
  • 原文地址:https://www.cnblogs.com/grandyang/p/5838403.html
Copyright © 2011-2022 走看看