Leetcode 146. LRU 缓存机制
原题链接
题解:双链表+哈希表
class LRUCache {
public:struct Node {int key, val;Node *left, *right;Node(int _key, int _val): key(_key), val(_val), left(NULL), right(NULL) {}}*L, *R;unordered_map<int, Node*> hash;int n;void remove(Node* p) {p->right->left = p->left;p->left->right = p->right;}void insert(Node* p) {p->right = L->right;p->left = L;L->right->left = p;L->right = p;}LRUCache(int capacity) {n = capacity;L = new Node(-1, -1), R = new Node(-1, -1);L->right = R, R->left = L;}int get(int key) {if (hash.count(key) == 0) return -1;auto p = hash[key];remove(p);insert(p);return p->val;}void put(int key, int value) {if (hash.count(key)) {auto p = hash[key];p->val = value;remove(p);insert(p);} else {if (hash.size() == n) {auto p = R->left;remove(p);hash.erase(p->key);delete p;}auto p = new Node(key, value);hash[key] = p;insert(p);}}
};/*** 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);*/
Leetcode 146. LRU 缓存机制相关推荐
- Leetcode 146. LRU缓存机制【哈希表 [哈希表存储每个元素在双向链表中的指针]+双向链表】
文章目录 问题描述 解题报告 实验代码 参考资料 问题描述 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . ...
- Java实现 LeetCode 146 LRU缓存机制
146. LRU缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - ...
- LeetCode 146. LRU缓存机制(哈希链表)
文章目录 1. 题目信息 2. 解题 2.1 手动实现list 2.2 使用内置list 1. 题目信息 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作 ...
- LeetCode —— 146. LRU缓存机制(Python)
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果关键字 (key) 存 ...
- [leetcode]146. LRU缓存机制
1.LRU(最近最少使用)缓存机制: https://baike.baidu.com/item/LRU/1269842?fr=aladdin 2.用到的数据结构: struct Value {int ...
- C++实现LRU算法(LeetCode 146 LRU缓存机制)
LRU算法: LRU算法(Least Recently Used)是一种缓存淘汰策略,最近使用的数据是有用的, 如果缓存满了,删除最久没用过的数据 LRU算法描述: (1)设置缓存大小 (2)get: ...
- Leetcode 146. LRU缓存机制 解题思路及C++实现
解题思路: 使用一个双向链表存储最常使用的key value对,最近使用的元素放在链表的表头,链表中最后一个元素是使用频率最低的元素.同时,使用一个map来记录对应的<key,<key, ...
- 146. LRU 缓存机制
146. LRU 缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 . 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 ...
- LeetCode 146. LRU 缓存
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 1)定义 2)初始化 3)值的插入 4)值的获取 三.本题小知识 四.加群须知 ...
最新文章
- 用html5的canvas画布绘制贝塞尔曲线
- 魔兽怀旧网站模块下载_一个人的网站重新设计和怀旧
- 25 人以下,免费!
- java中如何返回四维数组_如何从Java中的方法返回数组?
- linux虚拟机ping通主机
- Contains Duplicate 包含重复值
- Extjs4创建简单的图片上传
- spring boot 设置时区
- OpenCv学习篇——图像中值滤波算法
- 开源免费制造业erp erp5的优点分析
- 通过TCP/IP实现PC(客户端)远程控制开发板(服务器)上LED灯的实验
- 8.docker run --rm
- HTML网页设计:二、网页的基本标签
- 乐高wedo搭建图纸_乐高wedo2.0图纸 无齿翼龙
- c语言 虚拟时钟 指针,指针式模拟时钟.doc
- Typora如何自动生成标题序号
- 纯代码蓝色理想的logo
- ApacheCN Python 译文集(二)20211110 更新
- Eclipse TPTP平台配置详细步骤Ver1.0
- 隔年增长的题_2019行测备考:数量关系_浅谈隔年增长率的解法
热门文章
- atomic java_在Java中添加@atomic操作
- JDK 13:VM.events已添加到jcmd
- java 调试 工具_Java调试器–权威的工具列表
- Lambda运行时内部:窥视无服务器巢穴
- java中使用es的dsl_基于DSL的基于图论的Java程序中输入图数据的方法
- java正则表达式用法示例_Java正则表达式教程及示例
- 选择的按钮:将ToggleButtons用作单选按钮
- 12个很棒的Spring数据教程来启动您的数据项目
- OpenShift上的Java EE工作流(技术提示#64)
- Java / JVM是如何构建的? 采用OpenJDK是您的答案!