Lintcode24 LFU Cache solution 題解

【題目描述】

LFU (Least Frequently Used) is a famous cache eviction algorithm.For a cache with capacity k, if the cache is full and need to evict a key in it, the key with the lease frequently used will be kicked out.Implement set and get method for LFU cache.

LFU是一個著名的緩存算法。實現LFU中的set 和 get

【題目鏈接】

http://www.lintcode.com/en/problem/lfu-cache/

【題目解析】

這道題讓我們實現一個LRU緩存器,LRU是Least Recently Used的簡寫,就是最近最少使用的意思。那麼這個緩存器主要有兩個成員函數,get和set,其中get函數是通過輸入key來獲得value,如果成功獲得後,這對(key, value)升至緩存器中最常用的位置(頂部),如果key不存在,則返回-1。而set函數是插入一對新的(key, value),如果原緩存器中有該key,則需要先刪除掉原有的,將新的插入到緩存器的頂部。如果不存在,則直接插入到頂部。若加入新的值後緩存器超過了容量,則需要刪掉一個最不常用的值,也就是底部的值。具體實現時我們需要三個私有變量,cap, l和m,其中cap是緩存器的容量大小,l是保存緩存器內容的列表,m是哈希表,保存關鍵值key和緩存器各項的迭代器之間映射,方便我們以O(1)的時間內找到目標項。

【參考答案】

http://www.jiuzhang.com/solutions/lfu-cache/



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章