您好,登錄后才能下訂單哦!
【題目描述】
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/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。