0
点赞
收藏
分享

微信扫一扫

最大频率栈

椰果玩安卓 2022-04-30 阅读 49

最大频率栈

class FreqStack {
public:
    FreqStack() {
        
    }
    
    void push(int val) {
        int freq = ++m_valToRreqMap[val];
        m_freqToValMap[freq].push(val);
        m_maxFreq = m_maxFreq>freq?m_maxFreq:freq;
    }
    
    int pop() {
        int maxFreqVal = m_freqToValMap[m_maxFreq].top();
        m_freqToValMap[m_maxFreq].pop();
        if(m_freqToValMap[m_maxFreq].size()==0)
        {
            m_maxFreq--;
        }
        m_valToRreqMap[maxFreqVal]--;
        return maxFreqVal;
    }
    

    int m_maxFreq = 0;
    std::unordered_map<int, int> m_valToRreqMap; //每个数出现的次数
    std::unordered_map<int, std::stack<int>> m_freqToValMap; //某个频率对应的值,用栈可以直接得到插入时间
};

/**
 * Your FreqStack object will be instantiated and called as such:
 * FreqStack* obj = new FreqStack();
 * obj->push(val);
 * int param_2 = obj->pop();
 */
举报

相关推荐

0 条评论