
思路
对数据的操作是通过key访问到value,这使用map即可实现快速访问
最久未使用,表明对数据的增改查操作都会使得目标元素的"优先级"增高,即最近被使用,故,理论上可以使用优先级队列标记每一个哈希元素的优先级,当超过容量后,遍历优先级队列找到优先级最低的那一个进行删除即可
同时新增、获取、更新都要对优先级做调整,拿获取来说,我们需要先findIndex到指定位置,然后splice掉,最后将元素unshift到头部,这些时间复杂度均比较高,故不算最优实现
那么,如果是链表的话,就不会有这样的问题了
故该题的核心是使用哈希表存储key、value,使用链表表示优先级
实现
初始化链表和哈希表

get

put

removeNode和setHead

结果

网友评论