首页 > 代码库 > [LintCode] LRU Cache 缓存器
[LintCode] LRU Cache 缓存器
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get
and set
.
get(key)
- Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.set(key, value)
- Set or insert the value if the key is not already present. When the cache reached its capacity, it should invalidate the least recently used item before inserting a new item.
LeetCode上的原题,请参加我之前的博客LRU Cache。
class LRUCache{public: // @param capacity, an integer LRUCache(int capacity) { size = capacity; } // @return an integer int get(int key) { auto it = m.find(key); if (it == m.end()) return -1; l.splice(l.begin(), l, it->second); return it->second->second; } // @param key, an integer // @param value, an integer // @return nothing void set(int key, int value) { auto it = m.find(key); if (it != m.end()) l.erase(it->second); l.push_front({key, value}); m[key] = l.begin(); if (m.size() > size) { int t = l.rbegin()->first; l.pop_back(); m.erase(t); } }private: int size; list<pair<int, int> > l; unordered_map<int, list<pair<int, int> >::iterator> m;};
[LintCode] LRU Cache 缓存器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。