力扣895.最大頻率棧-創(chuàng)新互聯(lián)

題目

設(shè)計(jì)一個(gè)類似堆棧的數(shù)據(jù)結(jié)構(gòu),將元素推入堆棧,并從堆棧中彈出出現(xiàn)頻率最高的元素。

創(chuàng)新互聯(lián)主營潛山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),潛山h5重慶小程序開發(fā)搭建,潛山網(wǎng)站營銷推廣歡迎潛山等地區(qū)企業(yè)咨詢

實(shí)現(xiàn) FreqStack 類:

FreqStack() 構(gòu)造一個(gè)空的堆棧。
void push(int val) 將一個(gè)整數(shù) val 壓入棧頂。
int pop() 刪除并返回堆棧中出現(xiàn)頻率最高的元素。
如果出現(xiàn)頻率最高的元素不只一個(gè),則移除并返回最接近棧頂?shù)脑亍?/p>示例

輸入:
[“FreqStack”,“push”,“push”,“push”,“push”,“push”,“push”,“pop”,“pop”,“pop”,“pop”],
[[],[5],[7],[5],[7],[4],[5],[],[],[],[]]
輸出:[null,null,null,null,null,null,null,5,7,5,4]
解釋:
FreqStack = new FreqStack();
freqStack.push (5);//堆棧為 [5]
freqStack.push (7);//堆棧是 [5,7]
freqStack.push (5);//堆棧是 [5,7,5]
freqStack.push (7);//堆棧是 [5,7,5,7]
freqStack.push (4);//堆棧是 [5,7,5,7,4]
freqStack.push (5);//堆棧是 [5,7,5,7,4,5]
freqStack.pop ();//返回 5 ,因?yàn)?5 出現(xiàn)頻率最高。堆棧變成 [5,7,5,7,4]。
freqStack.pop ();//返回 7 ,因?yàn)?5 和 7 出現(xiàn)頻率最高,但7最接近頂部。堆棧變成 [5,7,5,4]。
freqStack.pop ();//返回 5 ,因?yàn)?5 出現(xiàn)頻率最高。堆棧變成 [5,7,4]。
freqStack.pop ();//返回 4 ,因?yàn)?4, 5 和 7 出現(xiàn)頻率最高,但 4 是最接近頂部的。堆棧變成 [5,7]。

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/maximum-frequency-stack
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

方法1:哈希表
  • 哈希表Mapcnts:存【數(shù),數(shù)出現(xiàn)的次數(shù)】。
  • 哈希表 Mapmap;:存【出現(xiàn)的次數(shù)c,出現(xiàn)次數(shù)為c的元素列表】。
  • 變量int max:當(dāng)前出現(xiàn)次數(shù)大值。
  • 序列中的結(jié)尾元素為出現(xiàn)次數(shù)為 c 的所有元素中最靠近棧頂?shù)脑亍?/li>
  • 當(dāng)我們?cè)谀炒?pop 操作后發(fā)現(xiàn)出現(xiàn)次數(shù)為 max 的集合為空時(shí),對(duì) max 進(jìn)行自減操作即可。
Java實(shí)現(xiàn)
class FreqStack {Mapcnts;
    Map>map;
    int max;
    public FreqStack() {cnts = new HashMap<>();
        map = new HashMap<>();
    }
    
    public void push(int val) {cnts.put(val, cnts.getOrDefault(val, 0) + 1);
        int c = cnts.get(val);
        Listlist = map.getOrDefault(c, new ArrayList<>());
        list.add(val);
        map.put(c, list);
        max = Math.max(max, c);
    }
    
    public int pop() {Listlist = map.get(max);
        int ans = list.remove(list.size() - 1);
        cnts.put(ans, cnts.get(ans) - 1);
        if (list.size() == 0) max--;
        return ans;
    }
}

在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁名稱:力扣895.最大頻率棧-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://muchs.cn/article30/hocpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)外貿(mào)建站、網(wǎng)站改版、網(wǎng)站策劃建站公司、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)