• LeetCode


    Maximum Gap

    2015.1.23 15:00

    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.

    Solution:

      This here is not an O(n) solution, but O(n * log(n)). Sort the array and find the maximal gap.

      As for a linear solution, I'm searching for it...

      Discussions online said it could be solved using bucket sort, but that doesn't really satisfy O(n) time scale, right? At least I wouldn't take it for O(n).

    Accepted code:

     1 // 1AC, not an O(n) solution, though, one not yet come up with...
     2 #include <algorithm>
     3 using namespace std;
     4 
     5 class Solution {
     6 public:
     7     int maximumGap(vector<int> &num) {
     8         sort(num.begin(), num.end());
     9         int n;
    10         
    11         n = (int)num.size();
    12         if (n < 2) {
    13             return 0;
    14         }
    15         
    16         int i;
    17         int ans = abs(num[0] - num[1]);
    18         for (i = 2; i < n; ++i) {
    19             ans = max(ans, abs(num[i - 1] - num[i]));
    20         }
    21         
    22         return ans;
    23     }
    24 private:
    25     int max(const int &x, const int &y) {
    26         return x > y ? x : y;
    27     }
    28     
    29     int abs(const int &x) {
    30         return x >= 0 ? x : -x;
    31     }
    32 };
  • 相关阅读:
    Linux下的文件权限
    启动memcached服务器并检查memcached是否启动,关闭memcached
    MySQL的mysqldump工具的基本用法
    MemAdmin
    不同服务器数据库之间的数据操作
    公用js
    AspNetPager分页控件的使用
    平台帮助
    触发器、游标
    jQuery增删改查
  • 原文地址:https://www.cnblogs.com/zhuli19901106/p/4244282.html
Copyright © 2020-2023  润新知