LeetCode 中等題 - LRU Cache
LeetCode
程式碼
自己實作 LinkedList 會更好,這邊直接用 JDK 的 LinkedList
class LRUCache {
private LinkedList<Integer> list = new LinkedList<>();
private Map<Integer, Integer> map = new HashMap<>();
private final int cap;
public LRUCache(int capacity) {
this.cap = capacity;
}
public int get(int key) {
Integer result = map.get(key);
if (result == null) {
return -1;
} else {
list.remove(Integer.valueOf(key));
list.addFirst(key);
}
return result;
}
public void put(int key, int value) {
Integer result = map.get(key);
if (result != null) {
list.remove(Integer.valueOf(key));
} else {
if (map.size() == cap) {
map.remove(list.removeLast());
}
}
list.addFirst(key);
map.put(key, value);
}
}