【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 題目描述
- 思路 & 代碼
- 思路一:哈希表
- 思路二: 摩爾投票法
題目描述
- 好家伙,這是今天最有意思的題目了
思路 & 代碼
思路一:哈希表
- 先說缺點(diǎn):空間復(fù)雜度O(n)
- 一次遍歷,記錄<數(shù)組存儲(chǔ)值,出現(xiàn)次數(shù)>,即可。
- 然后遍歷哈希表,找到出現(xiàn)次數(shù)大于 n/2 的數(shù)即可。
- (代碼就不貼了,這方法不是重點(diǎn))
思路二: 摩爾投票法
- 絕贊思路!
- 先考慮一個(gè)問題:多國混戰(zhàn),不同國家的士兵會(huì) 1v1,然后雙雙戰(zhàn)死。那么一個(gè)國家在什么條件下會(huì)一定勝利?
- 答案是兵力 > 其他所有國家士兵總數(shù)
- 最好情況下:其他士兵國家全在互毆,那么這個(gè)國家只需要對戰(zhàn)最后剩下來的一個(gè)國家的兵力即可。
- 最壞情況下:所有國家的士兵都剛好和這個(gè)國家對上,由于兵力 > 其他所有國家士兵總數(shù),因此最后還是會(huì)剩下至少一個(gè)士兵,也能取得勝利。也就是最好最壞都能“勝利”
- 顯而易見,勝利國就是本題的多數(shù)元素
- 無注釋版
總結(jié)
以上是生活随笔為你收集整理的【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的threading是什么意
- 下一篇: java线程唤醒与等待_Java线程的等