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