LRUCache
来源:互联网 发布:js 对象数组 编辑:程序博客网 时间:2024/04/27 18:08
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.
class LRUCache{public: struct CacheNode{CacheNode(int k, int v) :key(k), value(v) {}int key;int value;};LRUCache(int capacity) {this->capacity = capacity;}int get(int key) {if (addmap.find(key) != addmap.end()){lst.splice(lst.begin(), lst, addmap[key]);addmap[key] = lst.begin();return addmap[key]->value;}return -1;}void set(int key, int value) {if (addmap.find(key) != addmap.end()){addmap[key]->value = value;lst.splice(lst.begin(), lst, addmap[key]);addmap[key] = lst.begin();}else {if (capacity == lst.size()){addmap.erase(lst.back().key);lst.pop_back();}lst.push_front(CacheNode(key, value));addmap[key] = lst.begin();}}private:int capacity;std::list<CacheNode> lst;std::unordered_map<int, list<CacheNode>::iterator> addmap;};
0 0
- LRUCache
- LruCache
- LRUCache
- LruCache
- LRUCache
- LRUCache
- LruCache
- LRUCache
- LRUCache
- LRUCache
- LRUCache
- Lrucache
- lruCache
- LruCache
- LruCache
- LruCache
- LruCache
- LRUCache
- ANDROID开发之SQLite详解
- BZOJ 2251 2010Beijing WC 外星联络 后缀数组/Trie树
- AspNet MVC4 教学-3:AspNet MVC4 根据登录姓名的不同转向不同的View
- Java 获取指定日期的方法总结
- EasyMock 使用方法与原理剖析
- LRUCache
- C++primer(第四版)复习笔记—第二篇:容器和算法
- char、varchar、nchar、nvarchar的区别
- Qt学习之路_6(Qt局域网聊天软件)
- java swing 复选JCheckBox组件美化
- java 获取昨天,今天,明天的日期
- 基于mybatis动态sql的dao封装
- 关于SQLServer存储过程动态拼接,模糊查询的处理
- GetCursorPos() 与GetMessagePos()的区别