Sobes.tech
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).