Sobes.tech
Junior — Middle

Cum se poate elimina un element arbitrar dintr-un array (vector) în timp constant, dacă ordinea elementelor nu contează?

sobes.tech AI

Răspuns de la AI

Dacă ordinea elementelor dintr-un array (vector) nu este importantă, poți elimina un element arbitrar în timp constant, înlocuindu-l cu ultimul element al array-ului și apoi reducând dimensiunea array-ului cu 1.

Acest lucru evită deplasarea tuturor elementelor următoare, ceea ce de obicei necesită timp liniar.

Exemplu în C++:

#include <vector>

void removeAt(std::vector<int>& vec, size_t index) {
    if (index >= vec.size()) return;
    vec[index] = vec.back(); // înlocuiește elementul de eliminat cu ultimul
    vec.pop_back();          // elimină ultimul element
}