LRU Cache

发布时间 2023-09-25 23:14:03作者: 笨爱蛋蛋

LRU:  "Least Recently Used"(最近最少使用)  hashmap + 双向链表

      当塞满之后 假如还要塞,就把最久没被使用的删除了,把新的加进来就行(可以通过双向链表模拟实现)

  hashmap: key - Node  用于模拟实现 Cache

     

 

双向链表 (Node) O(1)的时间复杂度实现 头部增加 删除节点(任意节点 删除尾部可以先得到last 再 删除)   

(tips: 虚节点 头head  尾巴 tail  不用纠结空指针了)

 

 

 基本工具方法 都写完了 ,下面实现 LRU的两个主要方法 

get(key):

       1. 1map中没有key: 返回-1

       1.2map中有key   先删除节点 再加到头部  返回val就行

put(key,val)

        1. map中有key: 改变对应node的val 然后链表删除节点node  再加到头部

         2.map中没有key ---- 要新增节点了

            2.1 容量没满 : size++

                                     新建节点 temp

                                     链表 头部增加 temp,

                                    map中put (key,Node)

           2.2 容量满了:  删除最后一个节点

                                    map中remove最后一个节点所对应的key和节点

                                    新建节点 temp

                                     链表 头部增加 temp,

                                    map中put (key,Node)