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
}