新聞中心
設(shè)計(jì)一個(gè)類似堆棧的數(shù)據(jù)結(jié)構(gòu),將元素推入堆棧,并從堆棧中彈出出現(xiàn)頻率最高的元素。
實(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)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
- 哈希表Map
cnts:存【數(shù),數(shù)出現(xiàn)的次數(shù)】。 - 哈希表 Map
map;:存【出現(xiàn)的次數(shù)c,出現(xiàn)次數(shù)為c的元素列表】。 - 變量int max:當(dāng)前出現(xiàn)次數(shù)大值。
- 序列中的結(jié)尾元素為出現(xiàn)次數(shù)為 c 的所有元素中最靠近棧頂?shù)脑亍?/li>
- 當(dāng)我們在某次 pop 操作后發(fā)現(xiàn)出現(xiàn)次數(shù)為 max 的集合為空時(shí),對 max 進(jì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級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
名稱欄目:力扣895.最大頻率棧-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.dlmjj.cn/article/hocpo.html