Задачи
October 31, 2022

System design. Временной HashMap

Необходимо реализовать структуру данных "ключ-значение" на основе времени, в которой можно хранить несколько значений одного и того же ключа с разными временными метками и извлекать значение ключа в определенную временную метку.

Класс TimeMap:

  • TimeMap() Инициализирует объект структуры данных.
  • void set(string key, string value, int timestamp): Сохраняет ключевой ключ со значением value в заданную временную метку.
  • string get(string key, int timestamp): Возвращает значение, такое, что set был вызван ранее с timestamp_prev <= timestamp. Если таких значений несколько, возвращается значение, связанное с наибольшим значением timestamp_prev. Если значений нет, возвращается "".

Разбор

Для реализации этой задачи воспользуемся хэш-мапом, где ключом будет ключ key, а значением отсортированный хэш-мап <timestamp, value>. Данная структура будет полностью удовлетворять поставленным условиям. Детали реализации смотрите ниже.

Реализация