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

品划做网站成都多享网站建设公司

品划做网站,成都多享网站建设公司,网站建设哪个公司好,wordpress错误集锦2023-09-24每日一题 一、题目编号 146. LRU 缓存二、题目链接 点击跳转到题目位置 三、题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存i…

2023-09-24每日一题

一、题目编号

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) 的平均时间复杂度运行。

四、解题代码

struct DLinkedNode {int key, value;DLinkedNode* prev;DLinkedNode* next;DLinkedNode(): key(0), value(0), prev(nullptr), next(nullptr) {}DLinkedNode(int _key, int _value): key(_key), value(_value), prev(nullptr), next(nullptr) {}
};class LRUCache {
private:unordered_map<int, DLinkedNode*> cache;DLinkedNode* head;DLinkedNode* tail;int size;int capacity;public:LRUCache(int _capacity): capacity(_capacity), size(0) {// 使用伪头部和伪尾部节点head = new DLinkedNode();tail = new DLinkedNode();head->next = tail;tail->prev = head;}int get(int key) {if (!cache.count(key)) {return -1;}// 如果 key 存在,先通过哈希表定位,再移到头部DLinkedNode* node = cache[key];moveToHead(node);return node->value;}void put(int key, int value) {if (!cache.count(key)) {// 如果 key 不存在,创建一个新的节点DLinkedNode* node = new DLinkedNode(key, value);// 添加进哈希表cache[key] = node;// 添加至双向链表的头部addToHead(node);++size;if (size > capacity) {// 如果超出容量,删除双向链表的尾部节点DLinkedNode* removed = removeTail();// 删除哈希表中对应的项cache.erase(removed->key);// 防止内存泄漏delete removed;--size;}}else {// 如果 key 存在,先通过哈希表定位,再修改 value,并移到头部DLinkedNode* node = cache[key];node->value = value;moveToHead(node);}}void addToHead(DLinkedNode* node) {node->prev = head;node->next = head->next;head->next->prev = node;head->next = node;}void removeNode(DLinkedNode* node) {node->prev->next = node->next;node->next->prev = node->prev;}void moveToHead(DLinkedNode* node) {removeNode(node);addToHead(node);}DLinkedNode* removeTail() {DLinkedNode* node = tail->prev;removeNode(node);return node;}
};

五、解题思路

(1) 双端链表。

http://www.laogonggong.com/news/226.html

相关文章:

  • 机械做卖产品网站关键词排名seo优化
  • 广告设计有哪些内容深圳快速seo排名优化
  • 网站的建设初步定位今日重大新闻头条十条
  • 网站投票活动怎么做一站式营销推广
  • 政府门户网站建设需求强化防疫指导
  • 包包网站建设国外搜索引擎优化
  • 网站建设实习收获seo代做
  • 网站上那些兼职网页怎么做域名反查
  • 教育网站建设 培训网站建设百度推广获客
  • wordpress google font 360seo快速优化报价
  • 文案做站内网站日常维护有哪些360安全浏览器
  • 个体户备案网站可以做企业站吗代刷网站推广快速
  • 网站设计模板免费搜索seo怎么优化
  • 动态网站的定义怎么制作网站链接
  • 企业网站的开发与应用环球军事网最新消息
  • 建设一个网站需要哪些费用吗营销型网站建设推荐
  • 想发布oa网站 需要备案吗东莞seo排名公司
  • 网站开发基础课程百度精准营销获客平台
  • 台州网站建设网站推广加强服务保障满足群众急需ruu7
  • 上海做淘宝网站建设西安seo网站关键词
  • 网站怎么做来流量吗黄冈网站建设收费
  • 甘肃省住房和城乡建设厅注册中心网站首页青岛seo网站管理
  • 如何做网站的搜索栏百度网盘在线观看资源
  • 许昌城乡建设局网站网站诊断工具
  • 做相册的网站 ppt网络推广方法的分类
  • 旅游网站策划书网页模板源代码
  • 大连网站排名公司搜索引擎关键词优化技巧
  • 提供建站服务的网络公司的比较做市场推广应该掌握什么技巧
  • 免费自己设计房子的软件关键词优化排名软件
  • 电子商务网站建设源码营销技巧培训