描述:
为最近最少使用(LRU)缓存策略设计一个数据结构,它应该支持以下操作:获取数据(get)和写入数据(set)。
获取数据get(key):如果缓存中存在key,则获取其数据值(通常是正数),否则返回-1。
写入数据set(key, value):如果key还没有在缓存中,则写入其数据值。当缓存达到上限,它应该在写入新数据之前删除最近最少使用的数据用来腾出空闲位置。
第一次提交:编译警告
Solution.java:36: error: cannot find symbol
return map.get(key).val;
^
symbol: variable val
location: class Solution.Node
Solution.java:49: error: cannot find symbol
map.get(key).val = value;
^
symbol: variable val
location: class Solution.Node
2 errors
第二次提交:同上。
第三次提交:class Node 中属性为value,然而class Node 的构造方法中用的却是 this.val = val
第四次提交:Ac
面对这道题时没有思路,主要参考这个帖子 http://blog.csdn.net/zsjmfy/article/details/53404608。
采用双向链表存储结点,结点中包含键值和指向前驱节点和后继结点的引用;map中存储 key 和 结点,通过map.get(key)确定结点位置,所有最近被访问的结点放在链表尾部。