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:
- Criar um
Seta partir da primeira coleção. - Iterar sobre a segunda coleção, verificando se cada elemento está incluído no
Setcriado.
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