LRU緩存策略
阿新 • • 發佈:2017-05-10
http ava 獲取數據 雙向 方法 二次 思路 描述 find
描述:
為最近最少使用(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)確定結點位置,所有最近被訪問的結點放在鏈表尾部。
LRU緩存策略