Sobes.tech
Junior — Middle

Jak lze odstranit libovolný prvek z pole (vektoru) v konstantním čase, pokud na pořadí prvků nezáleží?

sobes.tech AI

Odpověď od AI

Pokud pořadí prvků v poli (vektoru) není důležité, lze libovolný prvek odstranit v konstantním čase tím, že jej nahradíme posledním prvkem pole a poté zmenšíme velikost pole o 1.

Tím se zabrání posunu všech následujících prvků, což obvykle zabere lineární čas.

Příklad v C++:

#include <vector>

void removeAt(std::vector<int>& vec, size_t index) {
    if (index >= vec.size()) return;
    vec[index] = vec.back(); // nahradí odstraňovaný prvek posledním
    vec.pop_back();          // odstraní poslední prvek
}