Sobes.tech
Junior — Middle

Kako se može ukloniti proizvoljan element iz niza (vektora) u konstantnom vremenu, ako redosled elemenata nije važan?

sobes.tech АИ

Одговор од АИ

Ако редоследот на елементите во масивот (векторот) не е важен, можете да отстраните произволен елемент во константно време, заменувајќи го отстранетиот елемент со последниот елемент од масивот и потоа намалувајќи ја големината на масивот за 1.

Ова избегнува поместување на сите следни елементи, што обично бара линерно време.

Пример во C++:

#include <vector>

void removeAt(std::vector<int>& vec, size_t index) {
    if (index >= vec.size()) return;
    vec[index] = vec.back(); // заменува го отстранетиот елемент со последниот
    vec.pop_back();          // го отстранува последниот елемент
}