leetcode-LRU Cache(2014.2.7)
来源:互联网 发布:linux虚拟文件系统vfs 编辑:程序博客网 时间:2024/05/17 08:54
参考的是网上的做法,用的双向链表和哈希,哈希是为了改善链表的查找性能:
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;
else
{
cacheList.splice(cacheList.begin(),cacheList,cacheMap[key]);
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:
list<CacheNode> cacheList;
unordered_map<int,list<CacheNode>::iterator> cacheMap;
int size;
};
0 0
- leetcode-LRU Cache(2014.2.7)
- LeetCode LRU 缓存 LRU Cache
- leetcode系列(7)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
- 苹果手机获取设备唯一UDID号
- 欧拉道路 和 欧拉回路
- a[100]
- 树状数组
- easyui 打开多个tab页签,切换到第一次打开的页签时,其内容总是别的页签内容解决办法。
- leetcode-LRU Cache(2014.2.7)
- linux 安装 rz sz 命令
- 修改Hadoop集群的备份数
- CreateThread()和_biginthreadex()
- Spring的IoC的配置
- 什么是转向灯?使用转向灯有何技巧?
- 一个高效的内存池实现
- 内存管理
- SICP学习笔3--lambda