Vizualizări interactive
Rulează algoritmii pas cu pas. Încearcă cu propriile date.
Parcurgerea vectorilor
Calculează maximum și suma unui vector, pas cu pas.
Căutare binară
Caută un element în O(log n) prin înjumătățirea intervalului.
Algoritmi de sortare
Bubble sort și selection sort animate, comparație cu swap vizibil.
Vector de frecvență
Numără aparițiile fiecărei valori într-o singură trecere.
Sortare prin numărare
Sortează fără comparații: numără, apoi reconstruiește în O(n + max).
Sume parțiale
Construiește prefixele și răspunde la suma pe orice interval în O(1).
Sume parțiale 2D
Suma pe orice dreptunghi dintr-o matrice prin incluziune-excluziune.
Doi pointeri
Caută o pereche cu sumă dată într-un vector sortat, în O(n).
Fereastră glisantă
Suma maximă a unei ferestre de lungime k, recalculată în O(1) la fiecare pas.
Vector de diferențe
Aplică update-uri pe intervale în O(1), apoi reconstruiește vectorul.
Secvența de sumă maximă (Kadane)
Găsește subsecvența cu suma cea mai mare în O(n): extinde sau repornește.
Stivă (stack)
LIFO: ce intră ultimul iese primul. Push și pop doar la vârf.
Coadă (queue)
FIFO: ce intră primul iese primul. Adaugi la spate, scoți din față.
Deque
Coadă cu două capete: adăugări și scoateri și în față, și în spate.
Listă înlănțuită
Noduri legate prin pointeri: inserare și ștergere doar prin relegare.
Mulțime & dicționar
Mulțime ordonată cu valori unice și map cheie → valoare.
Heap / coadă de priorități
Minimul mereu în rădăcină, cu sift-up și sift-down în O(log n).
Recursivitate
Stiva de apeluri pentru factorial: coborâm, atingem baza, ne întoarcem.
Backtracking
Arbore de decizie pentru submulțimi, cu tăierea ramurilor fără speranță.
Divide et Impera
Merge sort: împarte în jumătăți, sortează, apoi interclasează.
Tabel DP 1D
Fibonacci de jos în sus: fiecare stare calculată o singură dată.
Tabel DP 2D
Cea mai lungă subsecvență comună (LCS) completată celulă cu celulă.
Rucsac 0/1
Tabel DP: fiecare obiect e fie luat, fie lăsat, pentru valoare maximă.
Algoritmul lui Lee
BFS pe matrice: unda se extinde inel cu inel și află cel mai scurt drum.
Numere mari
Adunare cifră cu cifră, cu transport — pentru numere de orice lungime.
Geometrie de bază
Distanța dintre două puncte și aria unui triunghi în plan.
BFS pe graf
Parcurgere în lățime: unda se extinde inel cu inel din sursă.
DFS pe graf
Parcurgere în adâncime, cu timpii de intrare/ieșire tin/tout.
Componente conexe
Grupuri de noduri legate între ele, găsite prin parcurgeri repetate.
Componente tare conexe (Kosaraju)
Două parcurgeri DFS — pe graf și pe transpus — separă CTC-urile.
Sortare topologică
Algoritmul lui Kahn: scoate pe rând nodurile fără dependențe.
Dijkstra
Drumuri minime cu coadă de priorități, pe ponderi nenegative.
Bellman-Ford
Drumuri minime cu costuri negative, relaxând toate muchiile de n-1 ori.
Floyd-Warshall (Roy-Floyd)
Drumuri minime între toate perechile, cu noduri intermediare.
Kruskal (MST)
Arbore parțial de cost minim alegând muchii sortate, fără cicluri.
Prim (MST)
MST crescut dintr-un singur arbore, adăugând cea mai ieftină muchie.
Union-Find (DSU)
Mulțimi disjuncte cu uniune după rang și compresie de drum.
LCA
Cel mai apropiat strămoș comun, prin aliniere de adâncime și urcare.
Fenwick Tree (BIT)
Sume de prefix și actualizări punctuale în O(log n), cu i & -i.
Segment Tree
Interogări și actualizări pe interval în O(log n), pe un arbore binar.
RMQ (Sparse Table)
Minim pe interval în O(1) cu blocuri de lungime putere a lui 2.
Square Root Decomposition
Interogări pe interval în O(√n) cu blocuri precalculate.
DP pe biți (bitmask)
Comis-voiajor (TSP) cu stări codificate ca măști de biți.
Exponențierea matricelor
Mᵖ în O(log p) prin ridicare la pătrat — Fibonacci cu matrice.