leetcode之LRU Cache
来源:互联网 发布:淘宝开发团队多少人 编辑:程序博客网 时间:2024/03/29 15:40
问题描述如下:
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.
考虑使用list(也可以自己实现双向链表)和Map(也可以自己实现hash表)
cpp代码如下:
class LRUCache{private: typedef struct Node{ int key; int value; Node(int k,int v):key(k),value(v){} }Node; int cap_; list<Node> data; map<int,list<Node>::iterator> quick_find;public: LRUCache(int capacity) { cap_=capacity; } int get(int key) { map<int,list<Node>::iterator>::iterator p=quick_find.find(key); if(p==quick_find.end())return -1; int value=p->second->value; data.erase(p->second); data.push_front(Node(key,value)); quick_find[key]=data.begin(); return value; } void set(int key, int value) { map<int,list<Node>::iterator>::iterator p=quick_find.find(key); if(p!=quick_find.end()){ data.erase(p->second); data.push_front(Node(key,value)); quick_find[key]=data.begin(); return; } if((int)data.size()<cap_){ data.push_front(Node(key,value)); quick_find[key]=data.begin(); }else{ p=quick_find.find(data.back().key); quick_find.erase(p); data.pop_back(); data.push_front(Node(key,value)); quick_find[key]=data.begin(); } }};
0 0
- leetcode之LRU Cache
- leetcode之LRU Cache
- Leetcode之LRU Cache
- Leetcode之LRU Cache
- leetcode之LRU Cache
- LeetCode 之 LRU Cache解决思路
- LeetCode OJ 之 LRU Cache(LRU缓存)
- 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
- IIS设置文件可下载,及.eps下载时变成.ps
- 12-6java面向对象之String类
- 沃兹尼亚克:乔布斯车库创业被神话
- 改变状态栏、导航栏颜色
- ceph存储 Source Insight 常用设置和快捷键大全
- leetcode之LRU Cache
- HDU 5131 Song Jiang's rank list (结构体+MAP,2014广州现场赛)
- weka中文使用说明(五)
- 关于C++ const 的全面总结
- java语言中关于抽象类和接口的区别(面试经常问到,因此总结一下)
- qq空间密码破解
- 排序算法之归并
- SQLite使用方法
- 推荐给初级Java程序员的3本进阶书