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

Παράδειγμα με σύνολο:

  1. Δημιουργήστε ένα Set από την πρώτη συλλογή.
  2. Επαναλάβετε την δεύτερη συλλογή, ελέγχοντας αν κάθε στοιχείο περιλαμβάνεται στο 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