• 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;
        }
    };
  • 相关阅读:
    Linux之SSH详解
    Linux下的静态路由配置
    Linux之防火墙配置
    五、SQL 转换:Oracle 转 MySQL
    四、Oracle转Mysql总结
    三、MySQL 替代 Oracle 序列以及自增长处理
    二、MySQL 高级部分
    一、MySQL 基础
    15-1、常用类
    14-1、GUI
  • 原文地址:https://www.cnblogs.com/wxquare/p/5951823.html
Copyright © 2020-2023  润新知