LeetCode LRU Cache
来源:互联网 发布:linux排序命令 编辑:程序博客网 时间:2024/06/01 10:30
题目:
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.
struct CacheNode {int key;int value;CacheNode(int k, int v) : key(k), value(v) {}};class LRUCache{public:LRUCache(int capacity) {size = capacity;}int get(int key) {if (cacheMap.find(key) == cacheMap.end())return -1;//将要查找的CacheNode放在链首cacheList.splice(cacheList.begin(), cacheList, cacheMap[key]);//更新map中该节点的地址cacheMap[key] = cacheList.begin();return cacheMap[key]->value;}void set(int key, int value) {//插入节点if (cacheMap.find(key) == cacheMap.end()) {//删除尾部节点if (cacheList.size() == size) {cacheMap.erase(cacheList.back().key);cacheList.pop_back();}cacheList.push_front(CacheNode(key, value));cacheMap[key] = cacheList.begin();}else {cacheMap[key]->value = value;cacheList.splice(cacheList.begin(), cacheList, cacheMap[key]);cacheMap[key] = cacheList.begin();}}private:int size;list<CacheNode> cacheList;unordered_map<int, list<CacheNode>::iterator> cacheMap;};
0 0
- LeetCode LRU 缓存 LRU Cache
- LRU Cache | leetcode
- Leetcode: LRU Cache
- LeetCode:LRU Cache
- Leetcode: LRU Cache
- [LeetCode] LRU Cache
- leetcode之LRU Cache
- [LeetCode]LRU Cache
- [LeetCode] LRU Cache
- leetcode LRU Cache
- LeetCode题解:LRU Cache
- LeetCode | LRU Cache
- Leetcode: LRU Cache
- [LeetCode] LRU Cache
- LeetCode OJ:LRU Cache
- Leetcode LRU Cache
- LeetCode - LRU Cache
- [Leetcode] LRU Cache (Java)
- UI设计规范整理
- SQL SELECT INTO 语句
- new String(str.getBytes("ISO-8859-1"),"GBK")是怎么样一种机制
- 三星Tizen,路漫漫其修远兮
- JSON参数构造及如何获取
- LeetCode LRU Cache
- SQL CREATE DATABASE 语句
- 生态需水
- PopupWindow 外部点击的时候,PopupWindow是弹出,还是非模态
- Linux crontab 命令详解
- 音视频即时通讯开发中使用P2P技术的好处
- IOS 获得当前设备使用的代理IP
- CentOS 防火墙配置实战精要
- js 获取地址栏里面的参数