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

郑州营销网站托管公司哈尔滨制作网站企业

郑州营销网站托管公司,哈尔滨制作网站企业,参考消息,做网站怎么找公司1 题目:LRU 缓存 官方标定难度:中 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓…

1 题目:LRU 缓存

官方标定难度:中

请你设计并实现一个满足 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

提示:

1 <= capacity <= 3000
0 <= key <= 10000
0 <= value <= 1 0 5 10^5 105
最多调用 2 * 1 0 5 10^5 105 次 get 和 put

2 solution

用 hashmap 结合链表完成。
1 用 hashmap 完成 O(1) 查找
2 用 链表维持 k 个元素

代码

class LRUCache {/** 用一个map,存放元素在 list 中的位置* get, 通过 map 查找,没有找到返回-1, 如果找到元素,把元素移动到head并返回值* set,通过 map 查找,如果没有找到,新增到 head 处,如果超过容量,删除尾部*      如果找到了,更改 值 并把元素移动到head*/int capacity;list<pair<int, int>> lst;unordered_map<int, list<pair<int, int>>::iterator> map;public:LRUCache(int capacity) {this->capacity = capacity;}int get(int key) {if (map.find(key) == map.end()) return -1;auto it = map[key];lst.push_front(*it);lst.erase(it);map[key] = lst.begin();return lst.front().second;}void put(int key, int value) {auto it = map.find(key);if (it == map.end()) {lst.emplace_front(key, value);if(lst.size() > capacity){map.erase(lst.back().first);lst.pop_back();}map[key] = lst.begin();} else {auto itt = it->second;lst.erase(itt);lst.emplace_front(key, value);map[key] = lst.begin();}}
};

结果

在这里插入图片描述


文章转载自:

http://ysIZjzxN.hmgqy.cn
http://jPzafj3r.hmgqy.cn
http://oZeiaQ7q.hmgqy.cn
http://XPiSWLLO.hmgqy.cn
http://l5Ev4jJS.hmgqy.cn
http://ssOJ59xd.hmgqy.cn
http://2TulxCxx.hmgqy.cn
http://P5Sr7oNm.hmgqy.cn
http://2s7xxjAp.hmgqy.cn
http://IetlmjSN.hmgqy.cn
http://doVeYUcp.hmgqy.cn
http://UpfVZKtS.hmgqy.cn
http://dHLTPvdy.hmgqy.cn
http://e700mmgT.hmgqy.cn
http://c9CdWTQi.hmgqy.cn
http://FIKH7UJ0.hmgqy.cn
http://dlhytKMK.hmgqy.cn
http://idjfmcHH.hmgqy.cn
http://hG12Lp25.hmgqy.cn
http://CNoNPokB.hmgqy.cn
http://ZSXMS893.hmgqy.cn
http://ocbrZpG3.hmgqy.cn
http://txQW1VHD.hmgqy.cn
http://7Z3zRiOu.hmgqy.cn
http://AX3OLFsS.hmgqy.cn
http://0WyQcx5L.hmgqy.cn
http://gWlqEv01.hmgqy.cn
http://oJmMZ7xN.hmgqy.cn
http://3dIp3JdE.hmgqy.cn
http://zdtfCRkj.hmgqy.cn
http://www.dtcms.com/wzjs/681292.html

相关文章:

  • 做视频网站收入wordpress 默认html5
  • 泰州网站开发百度竞价课程
  • 深圳罗湖高端网站建设wordpress安卓版5
  • 织梦网站字体大小重庆手机微信网站建设
  • 定制营销型网站公司网站内外链建设
  • 保定哪有做网站的东莞做网站优化的公司
  • 企业网站建设合同书html5下载教程
  • 简述建站流程有什么好的书写网站
  • 上海网站建设开发公司哪家好网络认证登录页面
  • 比较好的网站开发公司学校学生网站模板下载
  • 单页型网站ifm网站做啥的
  • 网站建设现在市场大不大手机硬件开发
  • 寒亭区建设局网站dede 手机网站插件
  • 从网站开发到游戏编程网站模板服务商
  • 网站开发需要的知识现在开什么网站
  • 沈阳网站哪家公司做的好万网域名注册
  • 网站开发存在的风险百度集团总部在哪里
  • wordpress网站更改主题信息电商网站建设用php
  • 企业网站seo报价app网站平台搭建
  • 定制做网站费用creative建网站平台
  • 可以做微商的网站安阳门户网站
  • 泉州做网站价格宁波建设集团几个分公司
  • 广州市海珠区建设局网站wordpress升级文章编辑器
  • 做垂直平台网站天津网页设计教程
  • 电商网站如何设计内容frontpage官方下载
  • 免费领手机 网站saas 做网站
  • 山东移动网站建设ui设计网页设计培训
  • 建设企业网站官网下载东营网站建设运营公司
  • 制作网站团队知己知彼网站
  • 关于网站建设论文的结束语网易企业邮箱怎么修改绑定手机