题解 | #设计LRU缓存结构#

设计LRU缓存结构

http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61

键值对的查询,首选 map。又因为本题中 map 只是用来查询,不涉及排序,所以采用 unordered_map

维护最近使用的元素,这涉及了出队和入队的概念,但因为 queue 只能操作头部和尾部的元素,所以不适用于本题。

而 list 既满足了对头/尾元素的操作,也可以对中间元素进行删除操作,所以选用 list。

list 中只需要维护 map 中的值就足够了,不需要维护 pair<key, value>

假设list的最后一个元素是最新访问的
set方法注意判断:
1. key 或 value 值有误,返回空
2. key 在dict中,移除key
3. key不在dict中,判断list是否满了
满的话,先删除list中的第一个元素(用pop方法),并删除dict中的k-v,用del方法

更新dict中的k-v以及list中的最后一个元素。

未完待续……

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务