Sobes.tech
Junior — Middle

Как може да се премахне произволен елемент от масив (вектор) за постоянен време, ако редът на елементите не е важен?

sobes.tech AI

Отговор от AI

Ако редът на елементите в масива (вектора) не е важен, можете да премахнете произволен елемент с постоянна сложност, като го замените с последния елемент на масива и след това намалите размера на масива с 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();          // премахва последния елемент
}