Sobes.tech
Назад к вопросам
Junior — Middle
86

Каким образом можно осуществить удаление произвольного элемента из массива (вектора) за постоянное время, если порядок элементов не имеет значения?

Ответ от нейросети

sobes.tech 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();          // удаляем последний элемент
}