当前位置: 首页 > news >正文

免费空间分享漳州网站建设优化

免费空间分享,漳州网站建设优化,wordpress加载主题,做装饰材料的网站请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 …

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。
实现 LRUCache 类:
LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。
函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。

示例:

输入
[“LRUCache”, “put”, “put”, “get”, “put”, “get”, “put”, “get”, “get”, “get”]
[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]
输出
[null, null, null, 1, null, -1, null, -1, 3, 4]

解释
LRUCache lRUCache = new LRUCache(2);
lRUCache.put(1, 1); // 缓存是 {1=1}
lRUCache.put(2, 2); // 缓存是 {1=1, 2=2}
lRUCache.get(1); // 返回 1
lRUCache.put(3, 3); // 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}
lRUCache.get(2); // 返回 -1 (未找到)
lRUCache.put(4, 4); // 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}
lRUCache.get(1); // 返回 -1 (未找到)
lRUCache.get(3); // 返回 3
lRUCache.get(4); // 返回 4

336ms

typedef struct LRUnode{int key, value;struct LRUnode* prev;struct LRUnode* next;LRUnode():key(0),value(0),prev(NULL),next(NULL){};LRUnode(int key, int value):key(key),value(value),prev(NULL),next(NULL){};
}LRUnode;class LRUCache {
private:unordered_map<int,LRUnode*> m;LRUnode *head;LRUnode *tail;int size;int capacity;public:LRUCache(int capacity):capacity(capacity),size(0) {head = new LRUnode();tail = new LRUnode();head->next = tail;tail->prev = head;}int get(int key) {     int ret;auto it = m.find(key);if(it != m.end()){          ret = it->second->value;it->second->next->prev = it->second->prev;it->second->prev->next = it->second->next;it->second->next=head->next;it->second->prev = head;head->next->prev = it->second;head->next = it->second;}else{ret = -1;}return ret;}void put(int key, int value) { auto it = m.find(key);if(it!=m.end()){it->second->value = value;it->second->next->prev = it->second->prev;it->second->prev->next = it->second->next;it->second->next=head->next;it->second->prev = head;head->next->prev = it->second;head->next = it->second;}else{LRUnode *newNode = new LRUnode(key,value);m.insert(make_pair(key,newNode));newNode->next = head->next;head->next->prev = newNode;newNode->prev = head;head->next = newNode;size++;if(size>capacity){LRUnode *delNode = tail->prev;//tail->prev->prev = tail;tail->prev = tail->prev->prev;tail->prev->next = tail;size--;m.erase(delNode->key);delete delNode;}}}
};
http://www.yayakq.cn/news/32577/

相关文章:

  • 网站电脑基础培训班网络营销是干啥的
  • 做专利费减是哪个网站兴义市城乡建设局网站
  • 猎趣网站seo好学吗入门怎么学
  • 上海优秀网站设计手机免费制作app的软件下载
  • 做网站的是什么策划书平台建设部分
  • 网站做乘法表网站模板演示怎么做
  • 证券网站怎么做排版漂亮的网站
  • 网站后台怎么管理html主页设计
  • 网站首页设计分析竞价推广出价多少合适
  • 用asp做网站有哪控件四川建设网有限公司
  • 网页搜索记录怎么删除seo是什么意思
  • 福州网站模板建站营口市城乡住房建设局网站
  • 方正园林建设监理中心网站住建局主要负责什么
  • 只用html5做网站股票软件定制开发
  • 网站建设劳务协议服装设计学校排名国内
  • 卖建材的网站有哪些怎么制作一个个人网站
  • 免费h5网站制作平台九寨沟城乡建设官方网站
  • 广州婚恋网站排名怎样优化关键词到首页
  • ppt 做的最好的网站wordpress页面相册
  • 网站做的二维码失效了wordpress强制跳转
  • 响应式网站广州网站建设中国建设银行网站查行号
  • 网络销售型网站有哪些做网站(信科网络)
  • 校园视频网站建设网站建设公司财务预算
  • 深圳网站建设者psdw做网站
  • 在线黑科技网站怎样开一家公司
  • 清远网站制作公司门户网站建设公司
  • 学院实验室建设网站的好处室内设计效果图一套方案
  • 高端美食网站建设帝国cms手机网站
  • 成交功能网站小说网站开发需求
  • 中山建设网站首页网站建设推广小王熊掌号