Vizualizări interactive

Rulează algoritmii pas cu pas. Încearcă cu propriile date.

Parcurgerea vectorilor

Calculează maximum și suma unui vector, pas cu pas.

Vezi vizualizarea →

Căutare binară

Caută un element în O(log n) prin înjumătățirea intervalului.

Vezi vizualizarea →

Algoritmi de sortare

Bubble sort și selection sort animate, comparație cu swap vizibil.

Vezi vizualizarea →

Vector de frecvență

Numără aparițiile fiecărei valori într-o singură trecere.

Vezi vizualizarea →

Sortare prin numărare

Sortează fără comparații: numără, apoi reconstruiește în O(n + max).

Vezi vizualizarea →

Sume parțiale

Construiește prefixele și răspunde la suma pe orice interval în O(1).

Vezi vizualizarea →

Sume parțiale 2D

Suma pe orice dreptunghi dintr-o matrice prin incluziune-excluziune.

Vezi vizualizarea →

Doi pointeri

Caută o pereche cu sumă dată într-un vector sortat, în O(n).

Vezi vizualizarea →

Fereastră glisantă

Suma maximă a unei ferestre de lungime k, recalculată în O(1) la fiecare pas.

Vezi vizualizarea →

Vector de diferențe

Aplică update-uri pe intervale în O(1), apoi reconstruiește vectorul.

Vezi vizualizarea →

Secvența de sumă maximă (Kadane)

Găsește subsecvența cu suma cea mai mare în O(n): extinde sau repornește.

Vezi vizualizarea →

Stivă (stack)

LIFO: ce intră ultimul iese primul. Push și pop doar la vârf.

Vezi vizualizarea →

Coadă (queue)

FIFO: ce intră primul iese primul. Adaugi la spate, scoți din față.

Vezi vizualizarea →

Deque

Coadă cu două capete: adăugări și scoateri și în față, și în spate.

Vezi vizualizarea →

Listă înlănțuită

Noduri legate prin pointeri: inserare și ștergere doar prin relegare.

Vezi vizualizarea →

Mulțime & dicționar

Mulțime ordonată cu valori unice și map cheie → valoare.

Vezi vizualizarea →

Heap / coadă de priorități

Minimul mereu în rădăcină, cu sift-up și sift-down în O(log n).

Vezi vizualizarea →

Recursivitate

Stiva de apeluri pentru factorial: coborâm, atingem baza, ne întoarcem.

Vezi vizualizarea →

Backtracking

Arbore de decizie pentru submulțimi, cu tăierea ramurilor fără speranță.

Vezi vizualizarea →

Divide et Impera

Merge sort: împarte în jumătăți, sortează, apoi interclasează.

Vezi vizualizarea →

Tabel DP 1D

Fibonacci de jos în sus: fiecare stare calculată o singură dată.

Vezi vizualizarea →

Tabel DP 2D

Cea mai lungă subsecvență comună (LCS) completată celulă cu celulă.

Vezi vizualizarea →

Rucsac 0/1

Tabel DP: fiecare obiect e fie luat, fie lăsat, pentru valoare maximă.

Vezi vizualizarea →

Algoritmul lui Lee

BFS pe matrice: unda se extinde inel cu inel și află cel mai scurt drum.

Vezi vizualizarea →

Numere mari

Adunare cifră cu cifră, cu transport — pentru numere de orice lungime.

Vezi vizualizarea →

Geometrie de bază

Distanța dintre două puncte și aria unui triunghi în plan.

Vezi vizualizarea →

BFS pe graf

Parcurgere în lățime: unda se extinde inel cu inel din sursă.

Vezi vizualizarea →

DFS pe graf

Parcurgere în adâncime, cu timpii de intrare/ieșire tin/tout.

Vezi vizualizarea →

Componente conexe

Grupuri de noduri legate între ele, găsite prin parcurgeri repetate.

Vezi vizualizarea →

Componente tare conexe (Kosaraju)

Două parcurgeri DFS — pe graf și pe transpus — separă CTC-urile.

Vezi vizualizarea →

Sortare topologică

Algoritmul lui Kahn: scoate pe rând nodurile fără dependențe.

Vezi vizualizarea →

Dijkstra

Drumuri minime cu coadă de priorități, pe ponderi nenegative.

Vezi vizualizarea →

Bellman-Ford

Drumuri minime cu costuri negative, relaxând toate muchiile de n-1 ori.

Vezi vizualizarea →

Floyd-Warshall (Roy-Floyd)

Drumuri minime între toate perechile, cu noduri intermediare.

Vezi vizualizarea →

Kruskal (MST)

Arbore parțial de cost minim alegând muchii sortate, fără cicluri.

Vezi vizualizarea →

Prim (MST)

MST crescut dintr-un singur arbore, adăugând cea mai ieftină muchie.

Vezi vizualizarea →

Union-Find (DSU)

Mulțimi disjuncte cu uniune după rang și compresie de drum.

Vezi vizualizarea →

LCA

Cel mai apropiat strămoș comun, prin aliniere de adâncime și urcare.

Vezi vizualizarea →

Fenwick Tree (BIT)

Sume de prefix și actualizări punctuale în O(log n), cu i & -i.

Vezi vizualizarea →

Segment Tree

Interogări și actualizări pe interval în O(log n), pe un arbore binar.

Vezi vizualizarea →

RMQ (Sparse Table)

Minim pe interval în O(1) cu blocuri de lungime putere a lui 2.

Vezi vizualizarea →

Square Root Decomposition

Interogări pe interval în O(√n) cu blocuri precalculate.

Vezi vizualizarea →

DP pe biți (bitmask)

Comis-voiajor (TSP) cu stări codificate ca măști de biți.

Vezi vizualizarea →

Exponențierea matricelor

Mᵖ în O(log p) prin ridicare la pătrat — Fibonacci cu matrice.

Vezi vizualizarea →