Реализуйте класс LRUCache с capacity (максимальное число элементов):
get(key) - вернуть значение по ключу или -1 если нетput(key, value) - установить значение. Если capacity превышен, удалить самый давно использованный элементОбе операции должны работать за O(1).
const cache = new LRUCache(2);
cache.put(1, 1);
cache.put(2, 2);
cache.get(1); // 1
cache.put(3, 3); // вытесняет ключ 2 (он давно не использовался)
cache.get(2); // -1
Ключевой трюк: Map в JavaScript сохраняет порядок вставки. Начало Map - наименее давно использованный (LRU). При get или put делайте delete(key) + set(key, val) - элемент переместится в конец. При переполнении удаляйте map.keys().next().value - это первый (самый старый) ключ.
Что ещё могут спросить: реализовать без Map (через двусвязный список + хэш-таблицу - классическая реализация O(1)). Или добавить TTL к каждому элементу.