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

leetcode-设计LRU缓存结构-112

题目要求
在这里插入图片描述

思路
双链表+哈希表
代码实现

struct Node{int key, val;Node* next;Node* pre;Node(int _key, int _val): key(_key), val(_val), next(nullptr), pre(nullptr){}
};class Solution {
public:
unordered_map<int, Node*> hash;
Node* head;
Node* tail;
int cap;
int size;Solution(int capacity){size = 0;cap = capacity;head = nullptr;tail = nullptr;hash.clear();}void removetohead(Node* p)
{if(p == head)return;p->pre->next = p->next;if(p == tail)tail = p->pre;elsep->next->pre = p->pre;p->next = head;p->pre = nullptr;head->pre = p;head = p;return;
}int get(int key) {if(hash.find(key) == hash.end())return -1;removetohead(hash[key]);return hash[key]->val;}void set(int key, int val){if(hash.find(key) != hash.end()){hash[key]->val = val;removetohead(hash[key]);}else {if(size < cap) {Node* p = new Node(key, val);if(head == nullptr)head = tail = p;else {head->pre = p;p->next = head;head = p;}hash[key] = head;size++;}else{int k = tail->key;hash.erase(k);tail->key = key;tail->val = val;removetohead(tail);hash[key] = head;}}}
};

相关文章:

  • Matlab|基于PMU相量测量单元进行电力系统电压幅值和相角状态估计
  • 2024最新 Jenkins + Docker实战教程(七)- Jenkins实现远程传输和自动部署
  • MS Excel: 高亮当前行列 - 保持原有格式不被改变
  • 代码随想录-算法训练营day47【动态规划09:打家劫舍、打家劫舍II、打家劫舍III】
  • 基于python实现生命游戏
  • 【C++】---二叉搜索树
  • 小型海外仓如何选择第三方海外仓系统:多看多对比,性价比优先
  • 数据集的读取和处理
  • 【微机原理及接口技术】可编程计数器/定时器8253
  • C++标准模板(STL)- C 内存管理库 - 分配并清零内存 (std::calloc)
  • 怎么从视频中提取音频?这里有三种提取妙招
  • 19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正
  • 代码随想录算法训练营第22天(py)| 二叉树 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • Golang项目代码组织架构实践
  • 第一节:Redis的数据类型和基本操作
  • 收藏网友的 源程序下载网
  • [译] 怎样写一个基础的编译器
  • C++11: atomic 头文件
  •  D - 粉碎叛乱F - 其他起义
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • HTTP中的ETag在移动客户端的应用
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript类型识别
  • JAVA多线程机制解析-volatilesynchronized
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • magento2项目上线注意事项
  • Octave 入门
  • Puppeteer:浏览器控制器
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 关于List、List?、ListObject的区别
  • 机器学习学习笔记一
  • 简单实现一个textarea自适应高度
  • 前端面试之闭包
  • 让你的分享飞起来——极光推出社会化分享组件
  • 微信小程序填坑清单
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (1) caustics\
  • (2.2w字)前端单元测试之Jest详解篇
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (ZT)薛涌:谈贫说富
  • (二)构建dubbo分布式平台-平台功能导图
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (分布式缓存)Redis分片集群
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (七)Java对象在Hibernate持久化层的状态
  • (十六)Flask之蓝图
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)VC++中ondraw在什么时候调用的
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .NET 5种线程安全集合
  • .net core 依赖注入的基本用发