Junior — Middle
Come si può eliminare un elemento arbitrario da un array (vettore) in tempo costante, se l'ordine degli elementi non è importante?
sobes.tech AI
Risposta dell'AI
Se l'ordine degli elementi in un array (vetore) non è importante, puoi rimuovere un elemento arbitrario in tempo costante sostituendo l'elemento da rimuovere con l'ultimo elemento dell'array e poi riducendo la dimensione dell'array di 1.
Questo evita di spostare tutti gli elementi successivi, cosa che di solito richiede tempo lineare.
Esempio in C++:
#include <vector>
void removeAt(std::vector<int>& vec, size_t index) {
if (index >= vec.size()) return;
vec[index] = vec.back(); // sostituisce l'elemento da rimuovere con l'ultimo
vec.pop_back(); // rimuove l'ultimo elemento
}