原题链接

题解:双链表+哈希表

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 缓存机制相关推荐

  1. Leetcode 146. LRU缓存机制【哈希表 [哈希表存储每个元素在双向链表中的指针]+双向链表】

    文章目录 问题描述 解题报告 实验代码 参考资料 问题描述 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . ...

  2. Java实现 LeetCode 146 LRU缓存机制

    146. LRU缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - ...

  3. LeetCode 146. LRU缓存机制(哈希链表)

    文章目录 1. 题目信息 2. 解题 2.1 手动实现list 2.2 使用内置list 1. 题目信息 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作 ...

  4. LeetCode —— 146. LRU缓存机制(Python)

    运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果关键字 (key) 存 ...

  5. [leetcode]146. LRU缓存机制

    1.LRU(最近最少使用)缓存机制: https://baike.baidu.com/item/LRU/1269842?fr=aladdin 2.用到的数据结构: struct Value {int ...

  6. C++实现LRU算法(LeetCode 146 LRU缓存机制)

    LRU算法: LRU算法(Least Recently Used)是一种缓存淘汰策略,最近使用的数据是有用的, 如果缓存满了,删除最久没用过的数据 LRU算法描述: (1)设置缓存大小 (2)get: ...

  7. Leetcode 146. LRU缓存机制 解题思路及C++实现

    解题思路: 使用一个双向链表存储最常使用的key value对,最近使用的元素放在链表的表头,链表中最后一个元素是使用频率最低的元素.同时,使用一个map来记录对应的<key,<key, ...

  8. 146. LRU 缓存机制

    146. LRU 缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 . 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 ...

  9. LeetCode 146. LRU 缓存

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 1)定义 2)初始化 3)值的插入 4)值的获取 三.本题小知识 四.加群须知 ...

最新文章

  1. 用html5的canvas画布绘制贝塞尔曲线
  2. 魔兽怀旧网站模块下载_一个人的网站重新设计和怀旧
  3. 25 人以下,免费!
  4. java中如何返回四维数组_如何从Java中的方法返回数组?
  5. linux虚拟机ping通主机
  6. Contains Duplicate 包含重复值
  7. Extjs4创建简单的图片上传
  8. spring boot 设置时区
  9. OpenCv学习篇——图像中值滤波算法
  10. 开源免费制造业erp erp5的优点分析
  11. 通过TCP/IP实现PC(客户端)远程控制开发板(服务器)上LED灯的实验
  12. 8.docker run --rm
  13. HTML网页设计:二、网页的基本标签
  14. 乐高wedo搭建图纸_乐高wedo2.0图纸 无齿翼龙
  15. c语言 虚拟时钟 指针,指针式模拟时钟.doc
  16. Typora如何自动生成标题序号
  17. 纯代码蓝色理想的logo
  18. ApacheCN Python 译文集(二)20211110 更新
  19. Eclipse TPTP平台配置详细步骤Ver1.0
  20. 隔年增长的题_2019行测备考:数量关系_浅谈隔年增长率的解法

热门文章

  1. atomic java_在Java中添加@atomic操作
  2. JDK 13:VM.events已添加到jcmd
  3. java 调试 工具_Java调试器–权威的工具列表
  4. Lambda运行时内部:窥视无服务器巢穴
  5. java中使用es的dsl_基于DSL的基于图论的Java程序中输入图数据的方法
  6. java正则表达式用法示例_Java正则表达式教程及示例
  7. 选择的按钮:将ToggleButtons用作单选按钮
  8. 12个很棒的Spring数据教程来启动您的数据项目
  9. OpenShift上的Java EE工作流(技术提示#64)
  10. Java / JVM是如何构建的? 采用OpenJDK是您的答案!