Sobes.tech
Junior — Middle

¿Cómo se puede eliminar un elemento arbitrario de un array (vector) en tiempo constante, si el orden de los elementos no importa?

sobes.tech AI

Respuesta de la IA

Si el orden de los elementos en un array (vector) no importa, se puede eliminar un elemento arbitrario en tiempo constante reemplazando el elemento a eliminar por el último elemento del array y luego reduciendo el tamaño del array en 1.

Esto evita desplazar todos los elementos posteriores, lo cual generalmente toma tiempo lineal.

Ejemplo en C++:

#include <vector>

void removeAt(std::vector<int>& vec, size_t index) {
    if (index >= vec.size()) return;
    vec[index] = vec.back(); // reemplaza el elemento a eliminar por el último
    vec.pop_back();          // elimina el último elemento
}