【链表】实现LRU缓存策略LRU Cache
来源:互联网 发布:对万方数据库的评价 编辑:程序博客网 时间:2024/05/21 14:47
题目:设计一个最近使用的缓存数据结构,其须支持get和put两种操作
get(key):如果LRU中key存在,则返回其值,否则返回-1;
put(key,value):如果key存在,则改变其值为value,否则插入一个新的key,value。当缓存容量达到上限,需要在插入新的元素之前删去其中最近未使用的元素。
C++实现(C++ 11)https://discuss.leetcode.com/topic/6812/c-11-code-74ms-hash-table-list
class LRUCache {public: LRUCache(int capacity) : _capacity(capacity) {} int get(int key) { auto it = cache.find(key); if (it == cache.end()) return -1; touch(it); return it->second.first; } void set(int key, int value) { auto it = cache.find(key); if (it != cache.end()) touch(it); else {if (cache.size() == _capacity) {cache.erase(used.back());used.pop_back();} used.push_front(key); } cache[key] = { value, used.begin() }; } private: typedef list<int> LI; typedef pair<int, LI::iterator> PII; typedef unordered_map<int, PII> HIPII; void touch(HIPII::iterator it) { int key = it->first; used.erase(it->second.second); used.push_front(key); it->second.second = used.begin(); } HIPII cache; LI used; int _capacity;};
0 0
- 【链表】实现LRU缓存策略LRU Cache
- LeetCode LRU 缓存 LRU Cache
- LRU 缓存策略
- LRU 缓存策略
- LintCode-LRU缓存策略
- LRU缓存策略
- LRU缓存策略
- lintcode,LRU缓存策略
- LRU缓存策略
- LRU缓存策略设计
- LRU缓存策略设计
- LRU缓存策略-LintCode
- LRU缓存策略
- lintcode LRU缓存策略
- LeetCode 146. LRU Cache(LRU缓存)
- LRU cache的实现
- LRU cache实现 (Java)
- [Google] LRU cache实现
- 查看端口占用
- Head First SQL 第七章
- 把MSSQL数据表转为图表显示
- 元件引脚直径与PCB焊盘孔径对应关系
- 深度学习之理解神经网络的四个公式
- 【链表】实现LRU缓存策略LRU Cache
- Python学习笔记 --- Python命名规范
- PHP OpenSSL&Mcrypt实现AES加密
- task_struct结构体
- FA-期间重新打开
- 设计模式之原型模式
- gles小注意
- ubuntu 安装搜狗输入法 [防坑版]
- angular 如果给date初始化值,model一定得是Date类型,否则会报错