Blog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2025 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Struktury danych
Struktury danychmedium

Co to jest cache LRU i jak zaimplementować go w O(1)?

Tagi
#lru#cache#hashmap#linked-list#big-o
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

LRU (Least Recently Used) usuwa element, którego najdłużej nie używano. Typowa implementacja w O(1): HashMap do lookupu key→węzeł + lista dwukierunkowa, aby po użyciu przesuwać element na początek i usuwać z końca.

type Node = { key: string; prev?: Node; next?: Node }

// idea:
// map: key -> node
// list: head <-> ... <-> tail
// get(key): move node to head (O(1))
// put(key): insert/move to head; if over capacity, evict tail (O(1))

Powiązane pytania

Struktury danych
Ordered map (TreeMap) vs HashMap: kiedy wybrać mapę uporządkowaną?
#map#treemap#hashmap
Struktury danych
Co to jest segment tree i jaką złożoność daje dla zapytań i aktualizacji zakresowych?
#segment-tree#range-query#updates
Struktury danych
Budowanie kopca z tablicy: dlaczego może być O(n), a nie O(n log n)?
#heap#heapify#complexity
Struktury danych
Dlaczego resize tablicy haszującej może powodować skoki latencji i jak temu zapobiegać?
#hash-table#rehash#latency
Struktury danych
Lista jednokierunkowa vs dwukierunkowa: kiedy wybrać którą?
#linked-list#singly#doubly
Struktury danych
Co to jest sparse table i do jakich problemów się nadaje?
#sparse-table#rmq#preprocessing