LRU 算法
目录
golang 模拟实现 页面置换算法 Least Recently Used 最近最少使用
LRU算法介绍
参考:lc-146
缓存满时每次淘汰最久没有使用的页面
实现思路
维护一个双链表,每次 取、存 操作都会更新双链表(双链表从左往右使用次数依次下降)
实现 O(1) 的时间复杂度完成 取、存 操作
其中存的时候当页面缓存已满时替换掉最久未使用的节点(双链表末尾节点)
代码
|
|
调试
调试思路:
- vscode 自己写测试函数
- 从力扣复制用例进去(lc-146)
以下是测试函数
用到了第三方测试包:github.com/stretchr/testify/assert
|
|