Treci la conținutul principal

Un singur pas, indiferent de dimensiune

O(1) înseamnă timp constant: operația face același număr de pași fie că intrarea are 5 elemente, fie că are un milion. Munca nu crește deloc.

Aceasta este cea mai bună complexitate care există. Operații tipice O(1) în TypeScript sunt: citirea unui element de tablou după index, citirea unei valori dintr-un Map după cheie, .length, adăugarea unui element la final și calculele simple.

Observă ce nu înseamnă O(1): nu înseamnă „rapid”, ci înseamnă „nu devine mai lent atunci când intrarea crește”. Un pas constant poate fi totuși un pas lent — dar rămâne un singur pas.


Căutări în tablou și în Map

Un element de tablou se află la o poziție cunoscută în memorie, așa că words[2] este un singur salt — calculatorul nu parcurge elementele dinaintea lui. Aceeași citire costă la fel într-un tablou cu un milion de elemente.

O căutare într-un Map precum ages.get("Ben") are de asemenea timp constant în medie: cheia îi spune direct map-ului unde este stocată valoarea. Nu există o a doua valoare returnată pentru „a existat sau nu” — get() are tipul number | undefined și întoarce undefined atunci când cheia lipsește. ages.has("Ben") răspunde la aceeași întrebare printr-un boolean, iar ?? 0 transformă o valoare lipsă într-una implicită. Toate trei au timp constant.

Citirea unui element după index

Programul citește un element dintr-un tablou cu 5 elemente și unul dintr-un tablou cu un milion de elemente. Ambele citiri sunt un singur pas — lungimea tabloului nu joacă niciun rol.

Prompt
Scrie un program TypeScript cu un tablou mic de 5 cuvinte și un tablou mare cu un milion de numere completat printr-o buclă. Citește câte un element din fiecare după index și afișează-le pe amândouă, ca să arăți că citirea după index este un singur pas, indiferent cât de lung este tabloul.
Ieșire: program TypeScript și rezultatul capturat
Read an element by index

Citirea unei valori după cheie

ages.get("Ben") găsește direct 25. Cheia lipsă "Dan" dă undefined, iar ages.has("Dan") este false — tot în timp constant. ages.get("Dan") ?? 0 afișează în schimb 0.

Prompt
Scrie un program TypeScript cu un Map de la nume la vârste care conține Ana 30, Ben 25 și Cleo 41. Caută Ben și afișează valoarea împreună cu has(), apoi caută cheia lipsă Dan și afișează din nou valoarea și has(). La final afișează valoarea lipsă folosind ?? 0 ca valoare implicită.
Ieșire: program TypeScript și rezultatul capturat
Read a value by key

Adăugarea la final și calculele simple

push() adaugă un element la finalul unui tablou. De cele mai multe ori acesta este un singur pas. (Din când în când tabloul trebuie să crească și este copiat, dar, în medie, costul per push rămâne constant.)

Toate operațiile mărunte — atribuiri, adunări, comparații, interschimbarea a două valori — sunt și ele O(1). Ele sunt „pașii” în care sunt numărate toate celelalte clase de complexitate.

Adăugarea unui element la final

colors.push("galben") pune "galben" la final. Costul nu depinde de câte culori se află deja în tablou.

Prompt
Scrie un program TypeScript cu un tablou care conține roșu, verde, albastru. Afișează tabloul și lungimea lui, adaugă galben la final cu push, apoi afișează din nou tabloul și lungimea lui.
Ieșire: program TypeScript și rezultatul capturat
Append one element

Interschimbarea a două valori

[a, b] = [b, a] interschimbă cele două valori într-un singur pas de timp constant — nu este nevoie de o variabilă ajutătoare. Linia începe cu punct și virgulă pentru a fi citită ca o instrucțiune de sine stătătoare, nu ca un index pe linia de deasupra.

Prompt
Scrie un program TypeScript cu două variabile a = 1 și b = 2. Afișează-le, interschimbă-le cu atribuirea prin destructurarea tabloului [a, b] = [b, a] și afișează-le din nou.
Ieșire: program TypeScript și rezultatul capturat
Swap two values