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(); // διαγράφει το τελευταίο στοιχείο
}