Middle
Hogyan ellenőrizhetjük gyorsabban, hogy egy gyűjtemény része-e egy másiknak: tömb vagy halmaz használatával?
sobes.tech MI
Válasz az MI-től
Egy halmaz (Set) gyorsabb az elemek tartalmazásának ellenőrzésében.
Magyarázat:
- Array: Egy elem tartalmazásának ellenőrzése átlagosan O(n) időt vesz igénybe, ahol n az elemek száma. Egy másik kollekcióban való tartalmazás ellenőrzése n iterációt igényel, mindegyik O(m), ahol m a második kollekció mérete. Összesen O(n*m).
- Set: Egy elem tartalmazásának ellenőrzése átlagosan O(1) időt vesz igénybe. Egy kollekció másikban való tartalmazásának ellenőrzése n iterációt igényel, mindegyik O(1). Összesen O(n).
Példa halmazzal:
- Hozzon létre egy
Set-et az első kollekcióból. - Iteráljon a második kollekción, ellenőrizve, hogy minden elem benne van-e a létrehozott
Set-ben.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]
// Hozzon létre egy halmazt a collection1-ből
let set1 = Set(collection1)
// Ellenőrizze, hogy a collection2 alhalmaz-e a collection1-nek
let isSubset = collection2.allSatisfy { set1.contains($0) }
print(isSubset) // Igazat fog kiírni