Sobes.tech
Junior — Middle

Kuidas saab eemaldada suvalise elemendi massiivist (vektorist) konstantse aja jooksul, kui elementide järjekord ei ole oluline?

sobes.tech AI

Vastus AI-lt

Kui massiivi (vektori) elementide järjekord ei ole oluline, saab ükskõik millise elemendi eemaldada konstantse aja jooksul, asendades eemaldatava elemendi massiivi viimase elemendiga ja seejärel vähendades massiivi suurust 1-ga.

See väldib kõigi järgnevate elementide nihutamist, mis tavaliselt võtab lineaarse aja.

Näide C++-s:

#include <vector>

void removeAt(std::vector<int>& vec, size_t index) {
    if (index >= vec.size()) return;
    vec[index] = vec.back(); // asendab eemaldatava elemendi viimasega
    vec.pop_back();          // eemaldab viimase elemendi
}