五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

算法:數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

2022-10-17 11:24 作者:做架構(gòu)師不做框架師  | 我要投稿


數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長度的一半,請找出這個數(shù)字。

你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。


示例

  • 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2]

  • 輸出: 2


限制

  • 1 <= 數(shù)組長度 <= 50000


方法:哈希表

我們創(chuàng)建一個哈希表用來統(tǒng)計每個元素出現(xiàn)的次數(shù),當循環(huán)遍歷數(shù)組的時候,如果當前元素出現(xiàn)的次數(shù)大于目標數(shù)組的長度的一半,立即返回該元素即可。


代碼如下:

復(fù)雜度分析

  • 時間復(fù)雜度:O(n),其中 n 是數(shù)組 nums 的長度。

  • 空間復(fù)雜度:O(n)。


方法:數(shù)組排序

如果將數(shù)組中所有元素進行順序排序,那么數(shù)組中間的元素一定是眾數(shù)。

代碼如下:

復(fù)雜度分析

  • 時間復(fù)雜度:O(nlogn)。將數(shù)組排序的時間復(fù)雜度為 O(nlogn)。

  • 空間復(fù)雜度:O(logn)。


方法:摩爾投票法

Boyer-Moore majority vote algorithm,該算法解決的問題是如何在任意多的候選人(選票無序),選出獲得票數(shù)最多的那位。

  • 維護一個眾數(shù)和他出現(xiàn)的次數(shù)。

  • 遍歷數(shù)組中的所有元素,如果次數(shù)為 0,我們就把眾數(shù)賦值為當前值。

  • 如果眾數(shù)等于當前值,次數(shù)加 1;否則減 1;

  • 遍歷完整個數(shù)組后,最后統(tǒng)計的眾數(shù)即為整個數(shù)組的眾數(shù)。


代碼如下:

復(fù)雜度分析

  • 時間復(fù)雜度:O(n)。Boyer-Moore 算法只對數(shù)組進行了一次遍歷。

  • 空間復(fù)雜度:O(1)。Boyer-Moore 算法只需要常數(shù)級別的額外空間。


END

水滴集多成大海,讀書集多成學問,贈友人。

好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。


算法:數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字的評論 (共 條)

分享到微博請遵守國家法律
齐齐哈尔市| 永年县| 秭归县| 抚顺市| 万载县| 徐闻县| 黄山市| 泗洪县| 都江堰市| 梓潼县| 揭阳市| 长丰县| 保德县| 上蔡县| 含山县| 灵石县| 隆化县| 嘉荫县| 台北县| 南京市| 荃湾区| 岚皋县| 五华县| 长岭县| 延长县| 汉川市| 无极县| 青河县| 磐石市| 常州市| 台江县| 措美县| 霍城县| 若羌县| 松江区| 炎陵县| 株洲县| 腾冲县| 鄢陵县| 青岛市| 叶城县|