zoukankan      html  css  js  c++  java
  • 146. LRU Cache

    class LRUCache {
    public:
        list<pair<int,int>> q;
        unordered_map<int,list<pair<int,int>>::iterator> m;
        int cap;
        LRUCache(int capacity) {
            cap = capacity;
        }
        
        int get(int key) {
            if (!m.count(key))  return -1;
            auto it = m[key];
            int val = it->second;
            q.erase(it);
            q.push_front({key,val});
            m[key] = q.begin();
            return val;
        }
        
        void put(int key, int value) {
            if (m.count(key)) {
                auto it = m[key];
                q.erase(it);
                q.push_front({key,value});
                m[key] = q.begin();
                return;
            }
            if (m.size() == cap) {
                auto it = q.rbegin();
                int delete_key = it->first;
                q.pop_back();
                m.erase(delete_key);
            }
            q.push_front({key,value});
            m[key] = q.begin();
        }
    };
    
    /**
     * Your LRUCache object will be instantiated and called as such:
     * LRUCache obj = new LRUCache(capacity);
     * int param_1 = obj.get(key);
     * obj.put(key,value);
     */
  • 相关阅读:
    记录我发现的第一个关于 Google 的 Bug
    iOS 中的 Delayed Transition
    Appstore|IPA
    地图|定位
    开发者账号
    App跳转
    国际化
    短信|彩信
    闪光灯
    Cornerstone|SVN
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/9065600.html
Copyright © 2011-2022 走看看