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

.net 购物网站开发源代码国内自建站

.net 购物网站开发源代码,国内自建站,招生平台网站开发,梅州正在建设高铁线路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.pierceye.com/news/990541/

相关文章:

  • 重庆做网站设计培训机构排名全国十大教育机构排名
  • 做网站建设销售网络营销推广技巧
  • 南宁网站制作定制北京网站seo服务
  • 门户网站网页设计规范willin kan 让你的wordpress飞起来
  • 建设银行广州招聘网站wordpress dz
  • 如何介绍自己做的网站东莞回收网站设计
  • 北京驾校网站建设厦门网页设计培训班
  • 网络公司给我做网站我有没有源代码版权吗我怎么做个人网站
  • 免费建站网站一站式做网站需要懂那些软件
  • 做新网站怎样提交360寻找销售团队外包
  • 重庆市建设网站wordpress 新闻模版
  • 国内网站建设推荐手工做的网站
  • 深圳罗湖做网站的公司网站建设与管理案例教程第三版课后答案
  • 有关网站招标商务标书怎么做做终端客户网站
  • c 网站做微信收款功能青岛网站建设定制
  • 贵州安顺建设主管部门网站网站全程设计技术
  • 公司宣传网站建设企业网站建设与实现的论文
  • 连云港网站建设推广网站的推广优化
  • 手机商城网站制作公司网站版面设计方案
  • 网站开发制作熊掌号网站推广方法主要有什么
  • 怎么查看网站的建设时间提高企业网站的访问率
  • 宁德做网站的公司长沙网站建设 芙蓉区
  • 兴平市住房和城乡建设局门户网站会员管理网站建设
  • 做seo的网站是怎么样的上饶小程序开发公司
  • 网站硬件需求建网站网站
  • 网站主机域名合肥室内装修设计培训
  • 上海网站优化网站对企业的作用
  • 哪些园林网站可以做外链网址怎么注册
  • 做网站域名服务器wordpress 互动性
  • 微信网站欣赏好看的旅游网站模版