LintCode 48 [Majority Element III]

原題

給定一個(gè)整型數(shù)組般堆,找到主元素剔猿,它在數(shù)組中的出現(xiàn)次數(shù)嚴(yán)格大于數(shù)組元素個(gè)數(shù)的1/k硕糊。

給出數(shù)組[3,1,2,3,2,3,3,4,4,4]峦嗤,和 k =3蕊唐,返回 3
數(shù)組中只有唯一的主元素

解題思路

  • 大體思路同Majority Element I, Majority Element II是一樣的。本題則為k-k抵消
  • 維護(hù)一個(gè)hash表烁设,當(dāng)hash表中key的個(gè)數(shù)等于k的時(shí)候替梨,所有key對(duì)應(yīng)的value減一,注意如果value減一之后為零装黑,要?jiǎng)h除key
  • python中dictionary相關(guān)操作
# get all the keys of a dictionary
dict.keys()
# delete a key in dictionary
dict.pop(key, None) # or dict.pop(key)

完整代碼

class Solution:
    """
    @param nums: A list of integers
    @param k: As described
    @return: The majority number
    """
    def removeKey(self, counters):
        keySet = counters.keys()
        removeList = []
        for key in keySet:
            counters[key] -= 1
            if counters[key] == 0:
                removeList.append(key)
            
        for key in removeList:
            counters.pop(key, None)
        
    
    def majorityNumber(self, nums, k):
        counters = {}
        for num in nums:
            if num not in counters:
                counters[num] = 1
            else:
                counters[num] += 1
                
            if len(counters) >= k:
                self.removeKey(counters)
      
        if len(counters) == 0:
            return -1
        
        # 從新計(jì)算剩下的數(shù)字中在原數(shù)組的出現(xiàn)次數(shù)
        for key in counters.keys():
            counters[key] = 0

        for num in nums:
            if num in counters:
                counters[num] += 1
            
        
        # find the max key
        maxCounter, maxKey = 0, 0
        for key, value in counters.iteritems():
            if value > maxCounter:
                maxCounter = value
                maxKey = key
        
        return maxKey
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末副瀑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恋谭,更是在濱河造成了極大的恐慌糠睡,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疚颊,死亡現(xiàn)場(chǎng)離奇詭異狈孔,居然都是意外死亡信认,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門均抽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫁赏,“玉大人,你說我怎么就攤上這事到忽¢辖蹋” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵喘漏,是天一觀的道長(zhǎng)护蝶。 經(jīng)常有香客問我,道長(zhǎng)翩迈,這世上最難降的妖魔是什么持灰? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮负饲,結(jié)果婚禮上堤魁,老公的妹妹穿的比我還像新娘。我一直安慰自己返十,他們只是感情好妥泉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洞坑,像睡著了一般盲链。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迟杂,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天刽沾,我揣著相機(jī)與錄音,去河邊找鬼排拷。 笑死侧漓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的监氢。 我是一名探鬼主播布蔗,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼浪腐!你這毒婦竟也來了何鸡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤牛欢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后淆游,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傍睹,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隔盛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拾稳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吮炕。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖访得,靈堂內(nèi)的尸體忽然破棺而出龙亲,到底是詐尸還是另有隱情,我是刑警寧澤悍抑,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布鳄炉,位于F島的核電站,受9級(jí)特大地震影響搜骡,放射性物質(zhì)發(fā)生泄漏拂盯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一记靡、第九天 我趴在偏房一處隱蔽的房頂上張望谈竿。 院中可真熱鬧,春花似錦摸吠、人聲如沸空凸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呀洲。三九已至,卻和暖如春轿腺,著一層夾襖步出監(jiān)牢的瞬間两嘴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工族壳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留憔辫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓仿荆,卻偏偏與公主長(zhǎng)得像贰您,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拢操,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)锦亦。 張土汪:刷leetcod...
    土汪閱讀 12,747評(píng)論 0 33
  • 一杠园、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對(duì)于byte類型而言...
    龍貓小爺閱讀 4,267評(píng)論 0 16
  • Redis 數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介 Redis 可以存儲(chǔ)鍵與5種不同數(shù)據(jù)結(jié)構(gòu)類型之間的映射,這5種數(shù)據(jù)結(jié)構(gòu)類型分別為Stri...
    DreamerRzc閱讀 236,881評(píng)論 26 273
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等舔庶,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,502評(píng)論 0 3
  • 家或許僅是一種想念吧抛蚁,背井離鄉(xiāng)嘗盡世態(tài)炎涼陈醒,懷念起家的溫馨,百般繚繞的鄉(xiāng)思纏繞了我瞧甩,徹夜難眠钉跷。 夢(mèng)里的呢喃,呼...
    wang_simon閱讀 416評(píng)論 0 3