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

浙江银安建设有限公司网站平台推广引流怎么做

浙江银安建设有限公司网站,平台推广引流怎么做,pc做网站,互联网公司排名2023146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中#xff0c;则返回关键字的值#x…146. 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); // 缓存是 {11} lRUCache.put(2, 2); // 缓存是 {11, 22} lRUCache.get(1); // 返回 1 lRUCache.put(3, 3); // 该操作会使得关键字 2 作废缓存是 {11, 33} lRUCache.get(2); // 返回 -1 (未找到) lRUCache.put(4, 4); // 该操作会使得关键字 1 作废缓存是 {44, 33} lRUCache.get(1); // 返回 -1 (未找到) lRUCache.get(3); // 返回 3 lRUCache.get(4); // 返回 4提示 1 capacity 30000 key 100000 value 105最多调用 2 * 105 次 get 和 put 思考 // # 键值对--哈希表 // # 出入顺序--栈、队列、链表 // # 随机访问插入头部或者尾部--双向链表 O1 // # 包括插入、移动、删除 使用一个哈希表来存储键和它们对应的值以及在双向链表中的位置同时使用一个双向链表来维护键的最近使用顺序。在执行get操作时如果键存在则将其对应的节点移动到双向链表的末尾表示最近被访问在执行put操作时如果键已存在则更新其值并移动到链表末尾如果键不存在则检查缓存是否已满若已满则从链表头部移除最久未使用的键然后添加新键值对到缓存中。这样通过结合哈希表的快速查找和双向链表的顺序维护实现了平均时间复杂度为O(1)的LRU缓存机制。 参考代码c class LRUCache {// # 键值对--哈希表// # 出入顺序--栈、队列、链表// # 随机访问插入头部或者尾部--双向链表// # 包括插入、移动、删除 private:int capacity0; // 缓存的容量listint keyList; // 用于维护键的顺序最近使用的在末尾unordered_mapint, pairint, listint::iterator hashMap; // 哈希表存储键、值和键在keyList中的迭代器public:LRUCache(int capacity) {capacity0 capacity; // 初始化缓存容量}int get(int key) {auto it hashMap.find(key); // 在哈希表中查找键if(it ! hashMap.end()){ // 如果找到了键keyList.erase(it-second.second); // 从keyList中移除旧的键keyList.push_back(key); // 将键重新添加到keyList的末尾表示最近被访问hashMap[key].second (--keyList.end()); // 更新哈希表中的迭代器指向新的末尾位置return it-second.first; // 返回键对应的值}return -1; // 如果键不存在返回-1}void put(int key, int value) {if(hashMap.find(key) ! hashMap.end()){ // 如果键已经存在hashMap[key].first value; // 更新键对应的值keyList.erase(hashMap[key].second); // 从keyList中移除旧的键keyList.push_back(key); // 将键重新添加到keyList的末尾hashMap[key].second (--keyList.end()); // 更新哈希表中的迭代器指向新的末尾位置return; // 更新完成后返回}if(hashMap.size() capacity0){ // 如果当前缓存大小小于容量Insert(key, value); // 调用Insert函数插入新的键值对}else{int removeKey keyList.front(); // 获取并移除keyList中的第一个元素最久未使用的键keyList.pop_front(); // 从keyList中移除第一个元素hashMap.erase(removeKey); // 从哈希表中移除对应的键值对Insert(key, value); // 插入新的键值对}}// 插入或更新键值对的辅助函数void Insert(int key, int value){keyList.push_back(key); // 将键添加到keyList的末尾hashMap[key] make_pair(value, --keyList.end()); // 在哈希表中添加键值对和迭代器} };/*** 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://www.w-s-a.com/news/229042/

相关文章:

  • 手机网站页面制作网站怎么做快照
  • asp网站怎么仿站推广软件下载平台
  • 电子商务网站建设期末试题08答案互联网怎么做
  • 规范门户网站的建设和管理办法微信网站开发公司电话
  • 免费行情网站凡客的官网
  • 做网站运营的女生多吗海淀企业网站建设
  • 网站运行环境配置网站建设个一般需要花费多少钱
  • 广西平台网站建设报价wordpress 免费 企业 主题
  • 四川省建设厅职称查询网站辽宁省住房和城乡建设部网站
  • 公司网站后台登陆网站放到云服务器上怎么做
  • 济南 网站定制做网站购买域名
  • 代理分佣后台网站开发怎么用源码做网站视频
  • 天津网站建设招标wordpress七牛图片插件
  • 建设合同施工合同示范文本汕头市网络优化推广平台
  • 网站关键词修改老王搜索引擎入口
  • 那个网站做搬家推广比较好建设部网站办事大厅栏目
  • 做企业销售分析的网站广州网站设计建设
  • 建站流程wordpress怎么开伪静态
  • 服务器不是自己的做违法网站videopro wordpress
  • 北京建网站的公司哪个比较好网站开通告知书
  • 网站负责人 主体负责人黑龙江 建设监理协会网站
  • 手机网站焦点图代码建设工程质量检测网站
  • 墙绘做网站推广有作用没html网页制作用什么软件
  • 企业做网站有用吗网站推广的常用方法有哪些?
  • 景安做网站教程互联网小程序开发
  • 桂林北站离阳朔多远贵州省建设厅住房和城乡建设官网二建考试
  • 浙江省建设厅 网站是多少wordpress淘宝客一键
  • 网站流量少怎么做5个不好的网站
  • 随州网站建设有限公司个人申请注册公司需要多少钱
  • 东莞做商城网站建设wordpress批量下载外链图片