Sobes.tech
Middle

Como verificar mais rapidamente se uma coleção está contida na outra: usando um array ou um conjunto?

sobes.tech IA

Resposta da IA

Um conjunto (Set) é mais rápido para verificar a inclusão de elementos.

Explicação:

  • Array: A verificação de inclusão de um elemento em um array leva, em média, tempo O(n), onde n é o número de elementos. Para verificar se uma coleção está incluída em outra, são necessárias n iterações, cada uma com tempo O(m), onde m é o tamanho da segunda coleção. No total, O(n*m).
  • Set: A verificação de inclusão de um elemento em um conjunto leva, em média, tempo O(1). Para verificar se uma coleção está incluída em outra, são necessárias n iterações, cada uma com tempo O(1). No total, O(n).

Exemplo com um conjunto:

  1. Criar um Set a partir da primeira coleção.
  2. Iterar sobre a segunda coleção, verificando se cada elemento está incluído no Set criado.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]

// Criar um conjunto a partir de collection1
let set1 = Set(collection1)

// Verificar se collection2 está incluída em collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }

print(isSubset) // Vai imprimir true