最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

分享到微博請遵守國家法律
延长县| 肇州县| 建阳市| 上虞市| 玉龙| 稷山县| 望奎县| 怀化市| 长白| 屯门区| 湟源县| 比如县| 安龙县| 红安县| 东光县| 库尔勒市| 宾川县| 密云县| 河北区| 阳谷县| 景泰县| 吴江市| 洛阳市| 亳州市| 卫辉市| 闽清县| 容城县| 大余县| 托克托县| 云南省| 财经| 石城县| 太和县| 普格县| 乳山市| 土默特左旗| 云阳县| 凤翔县| 桦甸市| 铜鼓县| 敦化市|