設計乙個lru演算法(最近最少移除)來實現快取
思路:
**:
public
class
lrucache
//刪除中間節點
public
void
remove
(string key)
/** * 刪除節點
* @param node
*/public string removenode
(node node)
else
if(node == head)
else
return node.key;
}/**
* 尾部新增節點
* @param node
*/private
void
addnode
(node node)
//初始化head 和 end
if(head == null)
end = node;
}/**
* 重新整理被訪問節點位置
* @param node
*/private
void
refreshnode
(node node)
removenode
(node)
;addnode
(node);}
//插入
private
void
put(string key, string value)
node =
newnode
(key, value)
;addnode
(node)
; hashmap.
put(key, node);}
else
}public string get
(string key)
refreshnode
(node)
;return node.value;
}public
static
void
main
(string[
] args)
}class
node
}
LRU快取的設計
特點與應用 應用場景 效能要求 首先我們進行了分析,k v結構最常用的就是我們的hashmap,用hashmap訪問資料,可以達到o 1 分析 解決方案 新增到頭部 addfirst newnode cache.put key,newnode private void addfirst node n...
設計LRU快取結構
設計lru快取結構 設計lru快取結構,該結構在構造時確定大小,假設大小為k,並有如下兩個功能 要求 set和get方法的時間複雜度為o 1 某個key的set或get操作一旦發生,認為這個key的記錄成了最常使用的。當快取的大小超過k時,移除最不經常使用的記錄,即set或get最久遠的。輸入描述 ...
設計LRU快取結構
設計lru快取結構 描述 設計lru快取結構,該結構在構造時確定大小,假設大小為k,並有如下兩個功能 要求 set和get方法的時間複雜度為o 1 某個key的set或get操作一旦發生,認為這個key的記錄成了最常使用的。當快取的大小超過k時,移除最不經常使用的記錄,即set或get最久遠的。若o...