无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ù)字的評論 (共 條)

分享到微博請遵守國家法律
板桥市| 南开区| 万年县| 奈曼旗| 图们市| 尤溪县| 长汀县| 建德市| 阜南县| 莒南县| 密山市| 富民县| 松潘县| 梅州市| 尤溪县| 禄丰县| 祁东县| 大安市| 沙田区| 开远市| 博爱县| 民乐县| 和平县| 乌兰浩特市| 和龙市| 孝感市| 佳木斯市| 霍城县| 丰都县| 锡林郭勒盟| 武胜县| 滁州市| 富源县| 海盐县| 遵义县| 东丰县| 洪湖市| 庆阳市| 徐汇区| 化州市| 当雄县|