Sobes.tech
Middle

Come verificare più rapidamente se una collezione è contenuta in un'altra: usando un array o un insieme?

sobes.tech AI

Risposta dell'AI

Un insieme (Set) è più veloce per verificare l'inclusione di elementi.

Spiegazione:

  • Array: La verifica se un elemento è incluso in un array richiede in media tempo O(n), dove n è il numero di elementi. Per verificare se una collezione è inclusa in un'altra, sono necessarie n iterazioni, ognuna delle quali è O(m), dove m è la dimensione della seconda collezione. In totale, O(n*m).
  • Set: La verifica se un elemento è incluso in un insieme richiede in media tempo O(1). Per verificare se una collezione è inclusa in un'altra, sono necessarie n iterazioni, ognuna delle quali è O(1). In totale, O(n).

Esempio con un insieme:

  1. Creare un Set dalla prima collezione.
  2. Iterare sulla seconda collezione, verificando se ogni elemento è incluso nel Set creato.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]

// Creare un insieme da collection1
let set1 = Set(collection1)

// Verificare se collection2 è un sottoinsieme di collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }

print(isSubset) // Stampa true