Sobes.tech
Junior — Middle

Jak można usunąć dowolny element z tablicy (wektora) w czasie stałym, jeśli kolejność elementów nie ma znaczenia?

sobes.tech AI

Odpowiedź od AI

Jeśli kolejność elementów w tablicy (wektorze) nie jest ważna, można usunąć dowolny element w czasie stałym, zamieniając usuwany element na ostatni element tablicy, a następnie zmniejszając rozmiar tablicy o 1.

Pozwala to uniknąć przesuwania wszystkich kolejnych elementów, co zwykle zajmuje czas liniowy.

Przykład w C++:

#include <vector>

void removeAt(std::vector<int>& vec, size_t index) {
    if (index >= vec.size()) return;
    vec[index] = vec.back(); // zamienia usuwany element na ostatni
    vec.pop_back();          // usuwa ostatni element
}