LRU缓存实现
题目在这里,LeetCode 146 LRU 缓存
首先明确LRU策略缓存:Least Recently Used,最近最少使用,也就是在缓存删除的时候,优先选择最近没有使用过的缓存。
双端链表+哈希表算是LRU缓存的标准实现了。
看下LRU class的方法定义。
1 |
|
get操作:
- 获取key对应的value
- 更新当前key为最近使用的key、value
set操作:
- 检查当前缓存是否还有容量,如果有的话直接set
- 如果当前缓存已经没有容量,删除使用时间最久远的key,然后set
哈希表用来存储数据,get和set都依托于哈希表操作肯定没问题;
关键操作在于记录使用记录,双端链表非常适合这个场景只需要:
- 插入数据的时候,将数据移动到链表的头部;
- 删除数据的时候从链表的尾部删除;
双端链表
1 |
|
双端链表的关键操作:
1 |
|
完整版代码
1 |
|
链表应该还有一点点就要结束了。