《labuladong的算法小抄》笔记
第1章 核心套路
第2章 动态规划
第3章 数据结构系列
3.1 LRU缓存淘汰算法
运用所掌握的数据结构,设计和实现一个 LRU (Least Recently Used,最近最少使用) 缓存机制 。
实现 LRUCache 类:
LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。
class LRUCache {
LinkedHashMap<Integer,Integer> cache = new LinkedHashMap<>();
int cap;
public LRUCache(int capacity) {
this.cap = capacity;
}
public int get(int key) {
if(!cache.containsKey(key)){
return -1;
}
makeRecentely(key);
return cache.get(key);
}
public void put(int key, int value) {
if (cache.containsKey(key)){
cache.put(key,value);
makeRecentely(key);
return;
}
if(cache.size() >= cap){
int oldestKey = cache.keySet().iterator().next();
cache.remove(oldestKey