LeetCode 895 最大频率栈[Map] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 895 最大频率栈[Map] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
定义两个map,一个维护数字的频率,一个维护每个频率对应的数字组成的数组,输入进来更新两个map,当需要输出的时候,将最大频率对应的数组中最后的数取出返回,并更新该数频率map,删除其在最大频率数组中的位置,如果最大频率map维护的数组为空,将该频率删除,代码如下:
class FreqStack
private:
unordered_map<int, int> count;
map<int, vector<int>> freq;
public:
FreqStack()
void push(int val)
count[val] ++;
freq[count[val]].push_back(val);
int pop()
// 频率最大的数组
auto iter = --freq.end();
int target = iter->second.back();
count[target] --;
iter->second.pop_back();
if(iter->second.size() == 0)
freq.erase(iter->first);
return target;
;
/**
* Your FreqStack object will be instantiated and called as such:
* FreqStack* obj = new FreqStack();
* obj->push(val);
* int param_2 = obj->pop();
*/
以上是关于LeetCode 895 最大频率栈[Map] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章