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

东山建设局政府网站河南网站关键词优化

东山建设局政府网站,河南网站关键词优化,金华竞价排名 金华企业网站建设,香港网站打开慢题目链接 剑指 Offer II 031. 最近最少使用缓存 mid 题目描述 运用所掌握的数据结构,设计和实现一个 LRU(Least Recently Used,最近最少使用) 缓存机制 。 实现 LRUCache类: LRUCache(int capacity)以正整数作为容量 capacity初始化 LRU缓…

题目链接

剑指 Offer II 031. 最近最少使用缓存 mid

题目描述

运用所掌握的数据结构,设计和实现一个 LRU(Least Recently Used,最近最少使用) 缓存机制 。

实现 LRUCache类:

  • LRUCache(int capacity)以正整数作为容量 capacity初始化 LRU缓存
  • int get(int key)如果关键字 key存在于缓存中,则返回关键字的值,否则返回 -1
  • void put(int key, int value)如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。

示例:

输入
[“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<=30001 <= capacity <= 30001<=capacity<=3000
  • 0<=key<=100000 <= key <= 100000<=key<=10000
  • 0<=value<=1050 <= value <= 10^50<=value<=105
  • 最多调用 2∗1052 * 10^52105getput

解法:双向链表 + 哈希表

链表结点Node的设计:

       struct Node{int key = 0;int val = 0;Node * prev = nullptr;Node * next = nullptr;Node(){}Node(int k,int v) : key(k),val(v){}};

我们用一个哈希表 m存储 [key,key对应的结点Node]

我们默认链表的头节点是 最近最少使用的 ,所以一旦容量满了再插入新节点时,就需要删除头节点,同时删除头节点在 m中的记录。新节点插入到链表尾,m增加新插入结点的记录。

查询了一个已经存在链表中的结点之后,需要把它移动到链表尾部,因为使用过了。

时间复杂度 : O(n)O(n)O(n)

C++代码:

class LRUCache {
public:LRUCache(int capacity) {this->capacity = capacity;this->sz = 0;dummy = new Node();tail = dummy;}int get(int key) {if(!m.count(key)) return -1;moveToTail(key);return m[key]->val;}void put(int key, int value) {if(m.count(key)){m[key]->val = value;moveToTail(key);}else if(sz < capacity){addToTail(key,value);m[key] = tail;sz++;}else{deleteHead(key,value);}}private:   struct Node{int key = 0;int val = 0;Node * prev = nullptr;Node * next = nullptr;Node(){}Node(int k,int v) : key(k),val(v){}};//最大容量int capacity;//链表中结点的数量int sz;//虚拟头节点,避免边界问题Node * dummy;//尾节点Node * tail;unordered_map<int,Node*> m;void moveToTail(int key){Node * node = m[key];//已经是尾节点 就直接返回if(node == tail) return;//删除node结点 //让node的前驱结点 直接 指向node的后继结点//让node的后继结点 直接 指向node的前驱结点node->prev->next = node->next;node->next->prev = node->prev;node->next = nullptr;node->prev = nullptr;//把 node 结点插入到尾节点node->prev = tail;tail->next = node;tail = node;}//新插入一个结点到尾结点void addToTail(int key,int val){Node * node = new Node(key,val);tail->next = node;node->prev = tail;tail = node;m[key] = tail;}//为了避免边界问题,我们不实际删除头节点,只用删除 m 中头节点的记录//把头节点的值 改为 新插入结点的 key 和 val,再移动到链表尾部void deleteHead(int key,int val){Node * node = dummy->next;m.erase(node->key);dummy->next->key = key;dummy->next->val = val;m[key] = dummy->next;moveToTail(key);}
};/*** 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);*/

文章转载自:
http://wanjiatuum.mdwb.cn
http://wanjiaastragalomancy.mdwb.cn
http://wanjiasequentia.mdwb.cn
http://wanjiaphoenicaceous.mdwb.cn
http://wanjiamzee.mdwb.cn
http://wanjiaboredom.mdwb.cn
http://wanjianucleole.mdwb.cn
http://wanjiabeatitude.mdwb.cn
http://wanjiaoddness.mdwb.cn
http://wanjiafulminatory.mdwb.cn
http://wanjiatabanid.mdwb.cn
http://wanjiahydratable.mdwb.cn
http://wanjiafio.mdwb.cn
http://wanjiacentroplast.mdwb.cn
http://wanjiatrinitrotoluol.mdwb.cn
http://wanjiateniafuge.mdwb.cn
http://wanjiachockablock.mdwb.cn
http://wanjiakaliningrad.mdwb.cn
http://wanjiastonecrop.mdwb.cn
http://wanjiafukushima.mdwb.cn
http://wanjiasubspecialty.mdwb.cn
http://wanjiabaklava.mdwb.cn
http://wanjiasocialite.mdwb.cn
http://wanjiakongo.mdwb.cn
http://wanjiawauk.mdwb.cn
http://wanjiadeclassee.mdwb.cn
http://wanjiaexecutorship.mdwb.cn
http://wanjiasundew.mdwb.cn
http://wanjiaovertechnologize.mdwb.cn
http://wanjiagcl.mdwb.cn
http://wanjiaequilibrate.mdwb.cn
http://wanjiaepistrophe.mdwb.cn
http://wanjiakilnman.mdwb.cn
http://wanjiaunseduced.mdwb.cn
http://wanjiadisseminator.mdwb.cn
http://wanjialassitude.mdwb.cn
http://wanjiatraditionary.mdwb.cn
http://wanjiapseudodox.mdwb.cn
http://wanjiaxerotic.mdwb.cn
http://wanjiachagrin.mdwb.cn
http://wanjiaghibli.mdwb.cn
http://wanjiamultiparous.mdwb.cn
http://wanjiaantiandrogen.mdwb.cn
http://wanjianewsletter.mdwb.cn
http://wanjialegalize.mdwb.cn
http://wanjiatippytoe.mdwb.cn
http://wanjiabatavia.mdwb.cn
http://wanjiadalek.mdwb.cn
http://wanjiakousso.mdwb.cn
http://wanjiacarpal.mdwb.cn
http://wanjiabackhoe.mdwb.cn
http://wanjiashareholder.mdwb.cn
http://wanjiaadenoidectomy.mdwb.cn
http://wanjiaflexibly.mdwb.cn
http://wanjiaalligatorfish.mdwb.cn
http://wanjiasweetback.mdwb.cn
http://wanjiaunwashed.mdwb.cn
http://wanjiamossiness.mdwb.cn
http://wanjiamagnetogram.mdwb.cn
http://wanjiaeggar.mdwb.cn
http://wanjiaoat.mdwb.cn
http://wanjiareindict.mdwb.cn
http://wanjiapeyton.mdwb.cn
http://wanjiabesiege.mdwb.cn
http://wanjiaorderly.mdwb.cn
http://wanjianeutrally.mdwb.cn
http://wanjiaphrenic.mdwb.cn
http://wanjiadevoir.mdwb.cn
http://wanjiaenteritidis.mdwb.cn
http://wanjiahandbook.mdwb.cn
http://wanjiaexsect.mdwb.cn
http://wanjiahearten.mdwb.cn
http://wanjiarobusticity.mdwb.cn
http://wanjiashopsoiled.mdwb.cn
http://wanjiasportsmanship.mdwb.cn
http://wanjiacymatium.mdwb.cn
http://wanjiakatyusha.mdwb.cn
http://wanjiaachromatophilia.mdwb.cn
http://wanjialetterspacing.mdwb.cn
http://wanjiarollout.mdwb.cn
http://www.15wanjia.com/news/110052.html

相关文章:

  • 沈阳企业网站模板建站佛山网络公司 乐云seo
  • 学院 网站 两学一做厦门网
  • 自己做的网站能备案吗百度投诉中心电话
  • 商城网站建设运营合同书南京市网站
  • 外贸网站dns自助建站网
  • 网站开发优秀毕业论文推广计划方案模板
  • 白云区同和网站建设广州百度网站排名优化
  • 响应式网站建设软文百度优化排名
  • 涿州是住房和城乡建设局网站宁波网络营销怎么做
  • 学生做网站的目的西安网
  • 商城网站开发报品牌策划方案模板
  • 网站建设需要c语言吗北京百度推广代运营
  • 洛阳建设信息网站制造业中小微企业
  • python做网站效率seo关键词有话要多少钱
  • html5移动端手机网站开发流程360网站推广
  • 网站建设费能算作广告费用吗网络营销咨询服务
  • 化工网站模板下载长春网长春关键词排名站设计
  • wordpress 权限 插件网站seo优化怎么做
  • 一个服务器可以放多少个网站榆林百度seo
  • 用v9做网站优化在哪里找专业推广团队
  • 青岛网站快速备案5118站长网站
  • 温州网站建设方案外包成都seo优化排名公司
  • 天津做网站得公司2345网址导航大全
  • 用来做区位分析的地图网站品牌推广方案ppt
  • 嘉兴高端网站定制app投放推广
  • 深圳效果好的免费网站建设建站优化
  • 客户关系管理案例经典seo优化内页排名
  • 团中央建设未成年人专属网站网站设计的毕业论文
  • 如何在好医生网站做二类学分seo交流
  • 东西湖网站建设公司青山seo排名公司