LRU从本质上来讲是一个双向链表。
-
首先需要定义一个链表节点类Node 有next pre key value 构造 有参数构造
-
因为需要移动链表的位置 所以需要通过头部新增和尾部删除来操作。
-
然后操作节点的方法 有addNode removeLastNode
-
然后你会发现头部新增时候(获取时间需要加到头部,put时候也需要) 如果之前存在,需要删除掉(只有获取时间需要删除) 就有了remove方法
-
这样操作链表的3个方法确定了。
-
然后链表持有类 自然会有head tail count capacity 构造函数 get put
-
题目又要求时间复杂度 那就用空间换时间 用hashmap 冗余一份 取的时候o1
-
然后根据命令行输入 进行持有类初始化
-
根据命令来操作链表和hashmap 就完成啦