最近使用容量为K的缓存结构
文章目录 设计可以变更的缓存结构 最近使用容量为K的缓存结构 算法思路 相应代码 设计可以变更的缓存结构 最近使用容量为K的缓存结构 【题目】 设计一种缓存结构,该结构在构造时确定大小,假设大小为K,并有两个功能: get(key):返回key对应的value值; set(key,value):将记录(key,value)插入该结构。 【要求】 get和set方法的时间复杂度为O(1)。 某个key的get和set操作一旦发生,认为这个key的记录成了最经常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即get和set最久远的。 【举例】 假设缓存结构的实例是cache,大小为3,并依次发生如下行为: cache.set(“A”,1)。最经常使用的记录为(“A”,1)。 cache.set(“B”,2)。最经常使用的记录为(“B”,2),(“A”,1)变为最不经常的。 cache.set(“C”,3)。最经常使用的记录为(“C”,2),(“A”,1)还是最不经常的。 cache.get(“A”)。最经常使用的记录为(“A”,1),(“B”,2)变为最不经常的。 cache.set(“D”,4)。大小超过了3,所以移除此时最不经常使用的记录 (“B”,2),加入记录(“D”,4)。 此时(“D”,4)为最经常使用的记录,然后(“C”,2)变为最不经常使用的记录。 算法思路