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之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 0895. 最大频率栈

LeetCode 0895. 最大频率栈

Leetcode——最大频率栈

LeetCode 1224 最大相等频率[模拟 Map] HERODING的LeetCode之路

最大频率栈

最大频率栈