Sobes.tech
Middle

Jak rychleji zjistit, zda jedna kolekce patří do druhé: pomocí pole nebo množiny?

sobes.tech AI

Odpověď od AI

Množina (Set) je rychlejší při kontrole, zda jsou prvky obsaženy.

Vysvětlení:

  • Array: Kontrola, zda je prvek obsažen v poli, trvá průměrně čas O(n), kde n je počet prvků. Pro kontrolu, zda jedna kolekce je součástí jiné, je potřeba n iterací, každá s časem O(m), kde m je velikost druhé kolekce. Celkem O(n*m).
  • Set: Kontrola, zda je prvek obsažen v množině, trvá průměrně čas O(1). Pro kontrolu, zda jedna kolekce je součástí jiné, je potřeba n iterací, každá s časem O(1). Celkem O(n).

Příklad s množinou:

  1. Vytvořte Set z první kolekce.
  2. Iterujte přes druhou kolekci a ověřte, zda každý prvek je obsažen v vytvořeném Set.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]

// Vytvoření množiny z collection1
let set1 = Set(collection1)

// Ověření, zda je collection2 podmnožinou collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }

print(isSubset) // Vytiskne true