Junior — Middle
Ποια είναι η χρονική πολυπλοκότητα της διαγραφής ενός στοιχείου από έναν πίνακα;
sobes.tech AI
Απάντηση από AI
Η χρονική πολυπλοκότητα της διαγραφής ενός στοιχείου από έναν πίνακα εξαρτάται από το πού βρίσκεται το στοιχείο και από τον τρόπο υλοποίησης του πίνακα.
-
Αν χρειάζεται να διαγράψετε ένα στοιχείο με βάση το δείκτη, σε έναν δυναμικό πίνακα (π.χ., List σε Dart/Flutter), μετά τη διαγραφή, όλα τα επόμενα στοιχεία μετακινούνται για να γεμίσουν το κενό. Αυτό οδηγεί σε χρονική πολυπλοκότητα O(n), όπου n είναι ο αριθμός των στοιχείων μετά από αυτό που διαγράφηκε.
-
Αν διαγράψετε το τελευταίο στοιχείο, η λειτουργία εκτελείται σε O(1), καθώς δεν απαιτείται μετακίνηση.
Παράδειγμα σε Dart:
List<int> numbers = [1, 2, 3, 4, 5];
numbers.removeAt(2); // διαγράφει το στοιχείο στη θέση 2 (αριθμός 3)
// μετά τη διαγραφή, τα στοιχεία στις θέσεις 3 και 4 μετακινούνται προς τα αριστερά
Έτσι, γενικά, η διαγραφή ενός στοιχείου από έναν πίνακα είναι μια λειτουργία με χρονική πολυπλοκότητα O(n).