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

宝塔搭建网站教程透明网站模板

宝塔搭建网站教程,透明网站模板,专业做网站团队,项目网站基础设施建设LRU缓存 题解1 双map#xff08;差2个testcases#xff09;题解2 哈希表双向链表#xff08;参考#xff09;题解3 STL:listunordered_map 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类#xff1a; LRUCache(int capacity) 以 正… LRU缓存 题解1 双map差2个testcases题解2 哈希表双向链表参考题解3 STL:listunordered_map 请你设计并实现一个满足 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) 的平均时间复杂度运行。 提示 1 capacity 30000 key 100000 value 105最多调用 2 ∗ 1 0 5 2 * 10^5 2∗105 次 get 和 put 题解1 双map差2个testcases class LRUCache {int LRUcapacity;mapint, int cacheMap;mapint, int usecases;int time 0; static bool cmp(const pairint, int lhs, const pairint, int rhs) { return lhs.second rhs.second; } public:LRUCache(int capacity) {LRUcapacity capacity;}int get(int key) {if(cacheMap.count(key)){// 记录访问时刻value越大代表最近使用usecases[key] time;return cacheMap[key];}else return -1;}void put(int key, int value) {if(cacheMap.count(key)){cacheMap[key] value;usecases[key] time;}else{// 没满足O(1)的时间复杂度if(cacheMap.size() 1 LRUcapacity){// 拿到最早访问的关键字 value最小vectorpairint, int usecasesVector(usecases.begin(), usecases.end());sort(usecasesVector.begin(), usecasesVector.end(), cmp);int idx usecasesVector[0].first;cacheMap.erase(cacheMap.find(idx));usecases.erase(usecases.find(idx));}cacheMap[key] value;usecases[key] time;}} };/*** Your LRUCache object will be instantiated and called as such:* LRUCache* obj new LRUCache(capacity);* int param_1 obj-get(key);* obj-put(key,value);*/题解2 哈希表双向链表参考 class LRUCache {int LRUcapacity;// 双向链表保证每次找最近使用的操作时间复杂度为O(1)struct Node{int key;int value;Node* prev;Node* next;Node(): key(0), value(0), prev(nullptr), next(nullptr){}Node(int key1, int value1): key(key1), value(value1), prev(nullptr), next(nullptr){}};mapint, Node* cacheMap;Node* head, *tail; public:LRUCache(int capacity) {LRUcapacity capacity;head new Node();tail new Node();head-next tail;tail-prev head;}int get(int key) {if(cacheMap.count(key)){// 把node添加到头结点H// 对于双向链表, 原位置node需要修正的:// node-next-prev 和 node-prev-next// 目标位置H需要修正的// H-next, H-next-prevNode* getNode cacheMap[key];getNode-prev-next getNode-next;getNode-next-prev getNode-prev;getNode-prev head;getNode-next head-next;head-next head-next-prev getNode;return getNode-value;}else return -1;}void put(int key, int value) {if(cacheMap.count(key)){Node* getNode cacheMap[key];getNode-value value;// 添加到头结点getNode-prev-next getNode-next;getNode-next-prev getNode-prev;getNode-prev head;getNode-next head-next;head-next head-next-prev getNode;}else{if(cacheMap.size() 1 LRUcapacity){Node* pre tail-prev;cacheMap.erase(cacheMap.find(pre-key));pre-prev-next pre-next;pre-next-prev pre-prev;// 防止内存泄漏delete pre;}cacheMap[key] new Node(key, value);Node* getNode cacheMap[key];// 新结点添加到头结点 (代表最近被使用)// 新结点无原位置所以只需要修改H附近的链getNode-prev head;getNode-next head-next;head-next head-next-prev getNode;}} };题解3 STL:listunordered_map class LRUCache {const int cap;listpairint, int cache;unordered_mapint, decltype(cache.begin()) dict; public:LRUCache(int capacity) : cap(capacity) {}int get(int key) {if (!dict.count(key))return -1;cache.splice(cache.cend(), cache, dict[key]);return dict[key]-second;}void put(int key, int value) {if (!dict.count(key)) {if (cache.size() cap) {dict.erase(cache.front().first);cache.pop_front();}dict[key] cache.emplace(cache.cend(), key, value);}else {dict[key]-second value;cache.splice(cache.cend(), cache, dict[key]);}} };
http://www.zqtcl.cn/news/948172/

相关文章:

  • 陕西交通建设集团网站营销公司是什么意思
  • 网站建设自建与租用区别杭州建设局网站官网
  • 广告公司企业介绍seo研究中心怎么样
  • 苏州网站建设熊掌岳阳做网站哪家好
  • 深圳网站制作公司报价单宝塔做两个网站6
  • 百度站长工具怎么查排名贵港网站制作
  • 运城个人网站建设学校网站建设目的
  • 住房城乡建设部门门户网站购物网站排名大全
  • 手机网站平台江门网站建设模板
  • 做本地网站需要什么资质百度多长时间收录网站
  • 网站建设公司使用图片侵权使用者有无责任夸克免费空间
  • 网站建设制作鸿运通做网站能用python吗
  • 站长源码之家Wordpress 新建标签
  • 太原网站建设详细策划如何建设网站简答题
  • 乡村生态旅游网站建设方案如何做网站的导航栏
  • wordpress百度百科网站开发 seo
  • 网站主机名wordpress主题修改底部版权
  • 网站官网怎么做龙岩iot开发福建小程序建设
  • 哪个学校设有网站开发专业北京有哪些网站公司
  • 做网站需要的带宽上行还是下行湖南竞网科技有限公司
  • 帝国cms企业门户网站仿站视频教程 网盘互联网金融p2p网站建设
  • 个人网站备案涉及支付宝做二手的网站都有哪些
  • 如何给网站做宣传导航栏网页怎么制作
  • 返利网站建设高校精神文明建设网站
  • 河北百度推广seoseo全网优化指南
  • 网站建设网页开发一个类引用另一个类的方法
  • 第四章第二节网站建设的教学设计云南网站建设一度科技公司
  • php 搭建手机网站建e网app下载
  • 河北手机版建站系统价格微信怎么开店铺小程序
  • 中国建设教育网官网是什么网站潮州seo建站