Контест Middle Задачи на Kotlin спрашивают часто обновлено

LRU-кеш на LinkedHashMap

Условие

Смоделируй LRU-кеш ёмкостью cap:

  • put k v: записать значение (если ключ есть, обновить); запись делает ключ самым свежим; если ключей стало больше cap, удалить давно не использованный;
  • get k: вывести значение или -1; успешный get тоже делает ключ самым свежим.

Ввод. cap q (1 ≤ cap ≤ 10^4, 1 ≤ q ≤ 2000), затем q команд. Ключи и значения без пробелов.

Вывод. Ответы на get по одному в строке.

Как подойти

Подсказки: 2
  1. Нужна хеш-таблица плюс порядок использования.
  2. LinkedHashMap умеет accessOrder.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.