Skip to content

mrstatic23/LRU

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

LRU

Репозиторий для выполнения задания курса Golang Advanced от Rebrain

Задание

  • Создайте проект с произвольным названием. Данный проект вы можете добавить в свое портфолио, поэтому можете создать проект как на GitHub, так и во внутреннем GitLab.
  • В созданном проекте необходимо написать реализацию интерфейса:
    type LRUCache interface {
        // Добавляет новое значение с ключом в кеш (с наивысшим приоритетом), возвращает true, если все прошло успешно
        // В случае дублирования ключа вернуть false
        // В случае превышения размера - вытесняется наименее приоритетный элемент
        Add(key, value string) bool
    
        // Возвращает значение под ключом и флаг его наличия в кеше
        // В случае наличия в кеше элемента повышает его приоритет
        Get(key string) (value string, ok bool)
    
        // Удаляет элемент из кеша, в случае успеха возврашает true, в случае отсутствия элемента - false
        Remove(key string) (ok bool)
    И конструктор для вашего кеша вида:
    NewLRUCache(n int) LRUCache
    Где n - количество элементов.
  • Получение элемента должно происходить за время О(1) (т.е. не зависеть от размера кеша) - соответственно в качестве основного хранилища должна использоваться Hash Map.
  • Для решения вопроса приоритезации смотрите в сторону таких структур данных, как очереди и связные списки.
  • Задание со звездочкой: добиться работы со структурой данных, которую вы использовали для приоритезации, также за константное время.
  • Покрыть тестами

About

GO-06 03: Самописный LRU cache

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published