設(shè)計(jì)一個(gè)類似堆棧的數(shù)據(jù)結(jié)構(gòu),將元素推入堆棧,并從堆棧中彈出出現(xiàn)頻率最高的元素。
創(chuàng)新互聯(lián)主營(yíng)潛山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開發(fā),潛山h5重慶小程序開發(fā)搭建,潛山網(wǎng)站營(yí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)注明出處。
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ù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧