最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)LeetCode(164.求最大間距)

 更新時(shí)間:2021年07月31日 15:17:23   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(164.求最大間距),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

[LeetCode] 164. 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.

Example 1:

Input: [3,6,9,1]
Output: 3
Explanation: The sorted form of the array is [1,3,6,9], either
(3,6) or (6,9) has the maximum difference 3.

Example 2:

Input: [10]
Output: 0
Explanation: The array contains less than 2 elements, therefore return 0.

Note:

  • You may assume all elements in the array are non-negative integers and fit in the 32-bit signed integer range.
  • Try to solve it in linear time/space.

遇到這類問題肯定先想到的是要給數(shù)組排序,但是題目要求是要線性的時(shí)間和空間,那么只能用桶排序或者基排序。這里用桶排序 Bucket Sort 來做,首先找出數(shù)組的最大值和最小值,然后要確定每個(gè)桶的容量,即為 (最大值 - 最小值) / 個(gè)數(shù) + 1,在確定桶的個(gè)數(shù),即為 (最大值 - 最小值) / 桶的容量 + 1,然后需要在每個(gè)桶中找出局部最大值和最小值,而最大間距的兩個(gè)數(shù)不會在同一個(gè)桶中,而是一個(gè)桶的最小值和另一個(gè)桶的最大值之間的間距,這是因?yàn)樗械臄?shù)字要盡量平均分配到每個(gè)桶中,而不是都擁擠在一個(gè)桶中,這樣保證了最大值和最小值一定不會在同一個(gè)桶中,具體的證明博主也不會,只是覺得這樣想挺有道理的,各位看官大神們?nèi)糁廊绾巫C明請務(wù)必留言告訴博主啊,參見代碼如下:

class Solution {
public:
    int maximumGap(vector<int>& nums) {
        if (nums.size() <= 1) return 0;
        int mx = INT_MIN, mn = INT_MAX, n = nums.size(), pre = 0, res = 0;
        for (int num : nums) {
            mx = max(mx, num);
            mn = min(mn, num);
        }
        int size = (mx - mn) / n + 1, cnt = (mx - mn) / size + 1;
        vector<int> bucket_min(cnt, INT_MAX), bucket_max(cnt, INT_MIN);
        for (int num : nums) {
            int idx = (num - mn) / size;
            bucket_min[idx] = min(bucket_min[idx], num);
            bucket_max[idx] = max(bucket_max[idx], num);
        }
        for (int i = 1; i < cnt; ++i) {
            if (bucket_min[i] == INT_MAX || bucket_max[i] == INT_MIN) continue;
            res = max(res, bucket_min[i] - bucket_max[pre]);
            pre = i;
        }
        return res;
    }
};

Github 同步地址:

https://github.com/grandyang/leetcode/issues/164 

參考資料:

https://leetcode.com/problems/maximum-gap

http://blog.csdn.net/u011345136/article/details/41963051

https://leetcode.com/problems/maximum-gap/discuss/50642/radix-sort-solution-in-java-with-explanation

https://leetcode.com/problems/maximum-gap/discuss/50643/bucket-sort-java-solution-with-explanation-on-time-and-space

到此這篇關(guān)于C++實(shí)現(xiàn)LeetCode(164.求最大間距)的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)求最大間距內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解C語言的邏輯控制

    深入理解C語言的邏輯控制

    這篇文章主要介紹了C語言的邏輯控制,對C語言的邏輯控制有較為深入的剖析,需要的朋友可以參考下
    2014-07-07
  • C++如何采用Daemon進(jìn)行后臺程序的部署

    C++如何采用Daemon進(jìn)行后臺程序的部署

    這篇文章主要介紹了C++采用Daemon進(jìn)行后臺程序的部署,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • C++中函數(shù)指針詳解及代碼分享

    C++中函數(shù)指針詳解及代碼分享

    這篇文章主要介紹了C++中函數(shù)指針詳解及代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 用C語言實(shí)現(xiàn)簡單的三子棋

    用C語言實(shí)現(xiàn)簡單的三子棋

    這篇文章主要為大家詳細(xì)介紹了用C語言實(shí)現(xiàn)三子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • MATLAB Delaunay算法提取離散點(diǎn)邊界的方法

    MATLAB Delaunay算法提取離散點(diǎn)邊界的方法

    這篇文章主要為大家詳細(xì)介紹了MATLAB Delaunay算法提取離散點(diǎn)邊界的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • QT使用QChart繪制柱狀圖

    QT使用QChart繪制柱狀圖

    在Qt中使用QChart類可以快速繪制一個(gè)圖表出來,比如折線圖、餅圖、柱狀圖等,本文就來為大家介紹一下如何利用QChart繪制簡單的柱狀圖吧
    2024-11-11
  • C++使用windwos?api實(shí)現(xiàn)獲取計(jì)算機(jī)基本信息

    C++使用windwos?api實(shí)現(xiàn)獲取計(jì)算機(jī)基本信息

    這篇文章主要為大家詳細(xì)介紹了C++如何使用windwos?api實(shí)現(xiàn)獲取windwos計(jì)算機(jī)的基本信息,包括計(jì)算機(jī)名稱、操作系統(tǒng)版本、處理器信息等,需要的可以參考一下
    2023-04-04
  • C語言中qsort函數(shù)的用法實(shí)例詳解

    C語言中qsort函數(shù)的用法實(shí)例詳解

    這篇文章主要介紹了C語言中qsort函數(shù)的用法實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C++11系列學(xué)習(xí)之類型推導(dǎo)

    C++11系列學(xué)習(xí)之類型推導(dǎo)

    這篇文章主要介紹了C++11系列學(xué)習(xí)之類型推導(dǎo),文章基于C++的相關(guān)資料展開對主題的詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可參考一下
    2022-04-04
  • C++常見錯(cuò)誤中英文對照表

    C++常見錯(cuò)誤中英文對照表

    對于剛學(xué)編程,剛接觸C++的新手來說,編譯運(yùn)行報(bào)錯(cuò)是最頭疼的一件事,爆出一堆英文,英語差一點(diǎn)的又不知道什么意思,所以也不知道如何去改,在此,我給大家傳一份常見錯(cuò)誤中英文對照表及簡單解釋,希望可以幫到大家
    2016-05-05

最新評論

丁青县| 娄底市| 迁西县| 六盘水市| 霞浦县| 犍为县| 朝阳区| 理塘县| 报价| 慈溪市| 兴山县| 龙山县| 阳朔县| 镇原县| 阿瓦提县| 漠河县| 四平市| 稷山县| 潞城市| 清苑县| 视频| 亚东县| 黄陵县| 合川市| 汝州市| 洞头县| 元朗区| 荣昌县| 三门县| 山东省| 古蔺县| 虞城县| 通河县| 新泰市| 视频| 翁牛特旗| 西乌珠穆沁旗| 兴安县| 乌拉特中旗| 柘荣县| 峨眉山市|