Middle
Πώς να ελέγξετε πιο γρήγορα αν μια συλλογή περιέχεται σε μια άλλη: χρησιμοποιώντας έναν πίνακα ή ένα σύνολο;
sobes.tech AI
Απάντηση από AI
Ένα σύνολο (Set) είναι πιο γρήγορο για τον έλεγχο περιεχομένων στοιχείων.
Εξήγηση:
- Array: Ο έλεγχος αν ένα στοιχείο περιλαμβάνεται σε έναν πίνακα διαρκεί κατά μέσο όρο χρόνο O(n), όπου n είναι ο αριθμός των στοιχείων. Για να ελέγξετε αν μια συλλογή περιλαμβάνεται σε μια άλλη, χρειάζονται n επαναλήψεις, καθεμία με χρόνο O(m), όπου m είναι το μέγεθος της δεύτερης συλλογής. Συνολικά, O(n*m).
- Set: Ο έλεγχος αν ένα στοιχείο περιλαμβάνεται σε ένα σύνολο διαρκεί κατά μέσο όρο χρόνο O(1). Για να ελέγξετε αν μια συλλογή περιλαμβάνεται σε μια άλλη, χρειάζονται n επαναλήψεις, καθεμία με χρόνο O(1). Συνολικά, O(n).
Παράδειγμα με σύνολο:
- Δημιουργήστε ένα
Setαπό την πρώτη συλλογή. - Επαναλάβετε την δεύτερη συλλογή, ελέγχοντας αν κάθε στοιχείο περιλαμβάνεται στο
Setπου δημιουργήθηκε.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]
// Δημιουργία set από collection1
let set1 = Set(collection1)
// Έλεγχος αν η collection2 είναι υποσύνολο της collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }
print(isSubset) // Θα εμφανίσει true