zoukankan      html  css  js  c++  java
  • [leetcode]Maximum Gap

    用分桶的做法,思路参考自网友,很精妙。

    class Solution {
    public:
        int maximumGap(vector<int> &num) {
            int size = num.size();
            if (size < 2) {
                return 0;
            }
            int maxVal = *max_element(num.begin(), num.end());
            int minVal = *min_element(num.begin(), num.end());
            int gap = (maxVal - minVal - 1) / (size - 1) + 1; // ceiling function
            int bucketSize = (maxVal - minVal) / gap;
            vector<int> minBucket(bucketSize, INT_MAX);
            vector<int> maxBucket(bucketSize, INT_MIN);
            for (int i = 0; i < size; i++) {
                if (num[i] == minVal || num[i] == maxVal) {
                    continue;
                }
                int idx = (num[i] - minVal) / gap;
                minBucket[idx] = min(minBucket[idx], num[i]);
                maxBucket[idx] = max(maxBucket[idx], num[i]);
            }
            int maxGap = INT_MIN;
            int prev = minVal;
            for (int i = 0; i < bucketSize; i++) {
                if (minBucket[i] != INT_MAX) {
                    maxGap = max(maxGap, minBucket[i] - prev);
                    prev = maxBucket[i];
                }
            }
            maxGap = max(maxGap, maxVal - prev);
            return maxGap;
        }
    };
    

      

  • 相关阅读:
    mysql的数据类型和字段属性
    随便弄个名字 以后改
    drupal 不错的网址
    iwebshop 模板手册
    1.nginx 防注入
    DenyHosts 安装及配置详解
    drupal8 管理入门
    1.php代码块
    Drupal Nginx伪静态设置方法
    Nginx优化(十七)
  • 原文地址:https://www.cnblogs.com/lautsie/p/4196780.html
Copyright © 2011-2022 走看看