Middle
Ako rýchlo skontrolovať, či jedna kolekcia patrí do druhej: pomocou poľa alebo množiny?
sobes.tech AI
Odpoveď od AI
Množina (Set) je rýchlejšia pri kontrole, či sú prvky obsiahnuté.
Vysvetlenie:
- Pole (Array): Kontrola, či je prvok obsiahnutý v poli, trvá v priemere O(n), kde n je počet prvkov. Na kontrolu, či je jedna kolekcia obsiahnutá v inej, je potrebných n iterácií, každá s časom O(m), kde m je veľkosť druhej kolekcie. Celkovo O(n*m).
- Množina (Set): Kontrola, či je prvok obsiahnutý v množine, trvá v priemere O(1). Na kontrolu, či je jedna kolekcia obsiahnutá v inej, je potrebných n iterácií, každá s časom O(1). Celkovo O(n).
Príklad s množinou:
- Vytvorte
Setz prvej kolekcie. - Iterujte cez druhú kolekciu a overte, či každý prvok je obsiahnutý v vytvorenom
Set.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]
// Vytvorenie množiny z collection1
let set1 = Set(collection1)
// Overenie, či je collection2 podmnožinou collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }
print(isSubset) // Vytlačí true