LeetCode的LRU缓存实现

LRU是什么意思

LRU是操作系统底层的一个页面置换算法,当空间不够需要换出最长时间没有使用的页面,在本题中的意思就是当到达容量上限的时候要换出最长时间没有被访问过的节点。

如何实现

LRU的实现可以使用链表的方式,参照MySQL的实现,将热数据每次都放到链表头,删除链表尾的冷数据。

题目需要get()和put()方法都是O(1)的事件复杂度,但是链表遍历需要O(n)的时间复杂度,无法满足题目要求,可以想到数组下标索引或者HashMap辅助我们访问,本题如果用数组还需要多写一步hash()来确认key存放的位置,所以我们使用HashMap。

通过HashMap我们可以快速找到节点,也就满足了get()的O(1),但是对于put()的O(1),考虑到我们需要删除节点,单链表显然无法满足,因为单链表需要O(n)找到前驱节点,所以我们修改为双链表。

最终的结构就是HashMap + 双链表。

相关推荐
真实的菜6 分钟前
Redis 从入门到精通(三):持久化机制 —— RDB 与 AOF 深度解析
数据库·redis·缓存
好评笔记16 分钟前
深度学习面试八股——循环神经网络RNN
人工智能·rnn·深度学习·神经网络·算法·机器学习·aigc
橙子圆12318 分钟前
Redis知识10之缓存
数据库·redis·缓存
凯瑟琳.奥古斯特33 分钟前
力扣1003题C++解法详解
开发语言·c++·算法·leetcode·职场和发展
计算机安禾33 分钟前
【算法分析与设计】第48篇:流算法与数据概要技术
java·服务器·网络·数据库·算法
hunterkkk(c++)39 分钟前
SPFA最短路径算法(c++)
java·c++·算法
weixin_446260851 小时前
HANDOFF:基于蒸馏互补教师的人形机器人任务空间整体控制
人工智能·算法·机器人
我是一颗柠檬1 小时前
【Redis】Redis缓存应用实战Day12(2026年)
数据库·redis·缓存
代码中介商1 小时前
HTTP 完全指南(二):缓存机制深度详解
网络协议·http·缓存
basketball6161 小时前
Redis基础:2. Redis 常用命令
数据库·redis·缓存