164. 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.

問題分析

又是一道hard題梳码,上來直接沒思路呀收捣。
參考了網(wǎng)上的解題報告,是利用桶排序的思想没佑。
最關(guān)鍵的一點(diǎn)是鸵赖,設(shè)數(shù)組中有n個元素务漩,其中最大值為b,最小值為a它褪,則排序后相鄰兩個元素的差值不會小于?(b-a) / (n-1)?饵骨!
因此做法為,設(shè)置桶的大小為size = ?(b-a) / (n-1)?茫打,那么桶的個數(shù)為(b-a) / size + 1居触;遍歷數(shù)組妖混,對每個桶記錄其最大值和最小值;最后遍歷一遍桶轮洋,最大的gap不會出現(xiàn)在桶的內(nèi)部制市,而在桶之間,因此獲得“后一個非空桶的最小值減前一個非空桶的最大值”的最大值弊予,即為要求的值祥楣。

AC代碼

class Solution(object):
    def maximumGap(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        if n < 2:
            return 0
        b = a = nums[0]
        for i in nums:
            if i > b:
                b = i
            if i < a:
                a = i
        if a == b:
            return 0
        size = (b-a) / (n-1)
        if (b-a) % (n-1) != 0:
            size += 1
        num = (b-a) / size + 1
        bucket_b = [None for i in range(num)]
        bucket_a = [None for i in range(num)]
        for i in nums:
            bucket = (i-a)/size
            if not bucket_b[bucket] or i > bucket_b[bucket]:
                bucket_b[bucket] = i
            if not bucket_a[bucket] or i < bucket_a[bucket]:
                bucket_a[bucket] = i
        gap = 0
        p = 0
        while True:
            q = p+1
            while q < num and not bucket_a[q]:
                q += 1
            if q == num:
                break
            if gap < bucket_a[q] - bucket_b[p]:
                gap = bucket_a[q] - bucket_b[p]
            p = q

        return gap

Runtime: 59 ms, which beats 83.05% of Python submissions.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市汉柒,隨后出現(xiàn)的幾起案子误褪,更是在濱河造成了極大的恐慌,老刑警劉巖碾褂,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兽间,死亡現(xiàn)場離奇詭異,居然都是意外死亡斋扰,警方通過查閱死者的電腦和手機(jī)渡八,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門啃洋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來传货,“玉大人,你說我怎么就攤上這事宏娄∥试#” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵孵坚,是天一觀的道長粮宛。 經(jīng)常有香客問我,道長卖宠,這世上最難降的妖魔是什么巍杈? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮扛伍,結(jié)果婚禮上筷畦,老公的妹妹穿的比我還像新娘。我一直安慰自己刺洒,他們只是感情好鳖宾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逆航,像睡著了一般鼎文。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上因俐,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天拇惋,我揣著相機(jī)與錄音周偎,去河邊找鬼。 笑死撑帖,一個胖子當(dāng)著我的面吹牛栏饮,可吹牛的內(nèi)容都是我干的磷仰。 我是一名探鬼主播袍嬉,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼伺通,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逢享?” 一聲冷哼從身側(cè)響起罐监,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞒爬,沒想到半個月后弓柱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侧但,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年矢空,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禀横。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡屁药,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柏锄,到底是詐尸還是另有隱情酿箭,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布趾娃,位于F島的核電站缭嫡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抬闷。R本人自食惡果不足惜妇蛀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饶氏。 院中可真熱鬧讥耗,春花似錦、人聲如沸疹启。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喊崖。三九已至挣磨,卻和暖如春雇逞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茁裙。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工塘砸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晤锥。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓掉蔬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親矾瘾。 傳聞我的和親對象是個殘疾皇子女轿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,724評論 0 33
  • 純白篇的內(nèi)容針對于完全沒有接觸過淘寶客但是又想進(jìn)入這個行業(yè)的新人壕翩,大膨燃#可以略過。 第一步:了解淘寶客到底是什么? ...
    淘客優(yōu)惠卷閱讀 1,526評論 0 3
  • 今天說說我理解的區(qū)塊鏈吧放妈,之前還沒有正式總結(jié)過北救。 要談區(qū)塊鏈,就不能不談比特幣芜抒。比特幣作為第一個成功應(yīng)用的區(qū)塊鏈項...
    火星茶館閱讀 229評論 1 0
  • 1 其實有時候我們的努力根本顯得那么的微不足道珍策,我們總是以為自己已經(jīng)在很努力的學(xué)習(xí),很努力的工作挽绩,其實回頭看看膛壹,好...
    無人能及宋漂亮閱讀 210評論 0 0
  • 2017年5月28日 晴 開車下了高速,大片的麥田出現(xiàn)在眼前唉堪,金燦燦的,遠(yuǎn)處一排綠樹肩民,間或有高高架起的電線塔和人家...
    李叨叨不嘮叨閱讀 214評論 0 1