LeetCode精講:摩爾投票算法

什么是摩爾投票算法誊垢?

摩爾投票算法是一種使用線性時(shí)間和常數(shù)空間查找大部分元素序列的算法症见。它以1981年出版的Robert S. Boyer和J Strother Moore的名字命名,并且是流式算法的典型例子。

最簡(jiǎn)單的形式就是壁晒,查找輸入中重復(fù)出現(xiàn)超過一半以上(n/2)的元素。如果序列中沒有這種元素谬晕,算法不能檢測(cè)到正確結(jié)果,將輸出其中的一個(gè)元素之一攒钳。如果不能保證輸入數(shù)據(jù)中有占有一半以上的元素雷滋,需要再遍歷一下驗(yàn)證文兢。

算法流程:

該算法在其局部變量中維護(hù)一個(gè)序列元素和一個(gè)計(jì)數(shù)器焕檬,計(jì)數(shù)器最初為零。然后实愚,它一次一個(gè)地處理序列的元素。處理元素x時(shí)击喂,如果計(jì)數(shù)器為零碰辅,則算法將x存儲(chǔ)為其維護(hù)的序列元素,并將計(jì)數(shù)器設(shè)置為1乎赴。否則,它將x與存儲(chǔ)的元素進(jìn)行比較榕吼,并使計(jì)數(shù)器遞增(如果相等)或遞減計(jì)數(shù)器(不相等)。

這里有兩個(gè)先覺條件要明確:

出現(xiàn)超過一半以上(n/2)的元素有且只有一個(gè)原探;

這個(gè)元素一定存在

這里先貼代碼(swift):


代碼摘要:

我們維護(hù)一個(gè)局部變量作為當(dāng)前查找元素顽素,一個(gè)局部變量作為計(jì)數(shù)器,

當(dāng)遍歷開始的時(shí)候型型,此時(shí)計(jì)數(shù)(count)為0全蝶,則將數(shù)組第一個(gè)元素作為當(dāng)前查找元素;

當(dāng)遍歷的元素與查找元素相等抑淫,計(jì)數(shù)加1;反之則-1始苇;

若當(dāng)計(jì)數(shù)為0時(shí),將下一個(gè)元素作為當(dāng)前查找元素函喉,繼續(xù)重復(fù)以上操作;當(dāng)遍歷結(jié)束時(shí)函似,當(dāng)前查找元素則為目標(biāo)元素。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末顿天,一起剝皮案震驚了整個(gè)濱河市蔑担,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸟缕,老刑警劉巖排抬,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蹲蒲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缘薛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門卡睦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人表锻,你說我怎么就攤上這事¢艹伲” “怎么了码耐?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵溶其,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我瓶逃,道長(zhǎng)廓块,這世上最難降的妖魔是什么契沫? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任懈万,我火速辦了婚禮拴清,結(jié)果婚禮上会通,老公的妹妹穿的比我還像新娘。我一直安慰自己沪停,他們只是感情好裳涛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著端三,像睡著了一般。 火紅的嫁衣襯著肌膚如雪且轨。 梳的紋絲不亂的頭發(fā)上虚婿,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音然痊,去河邊找鬼。 笑死锹引,一個(gè)胖子當(dāng)著我的面吹牛唆香,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躬它,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼倘待!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凸舵,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渐苏,沒想到半個(gè)月后增热,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡公黑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年摄咆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吭从。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涩金,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情步做,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布煮剧,位于F島的核電站将鸵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏顶掉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一驱还、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧议蟆,春花似錦萎战、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔚约。三九已至涂籽,卻和暖如春苹祟,著一層夾襖步出監(jiān)牢的瞬間评雌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工砂轻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斤吐,地道東北人搔涝。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓庄呈,卻偏偏與公主長(zhǎng)得像臼婆,于是被迫代替她去往敵國和親抒痒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颁褂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系颁独,并對(duì)這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而且確保經(jīng)過這...
    Winterfell_Z閱讀 5,797評(píng)論 0 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,381評(píng)論 0 5
  • 后來的我經(jīng)常會(huì)在別人的故事里流著自己的眼淚吓懈,感嘆人世的悲苦,但卻仍平復(fù)不下一顆躁動(dòng)不安的心耻警。對(duì)于未知的苦和樂甸怕,我都...
    清w歡閱讀 287評(píng)論 1 4
  • 在性能測(cè)試種最常見的問題 在軟件性能測(cè)試期間,開發(fā)人員會(huì)尋找性能的癥狀和問題梢杭。速度問題——例如緩慢的響應(yīng)和長(zhǎng)時(shí)間的...
    楊二黑閱讀 358評(píng)論 0 0