Middle
Jak szybciej sprawdzić, czy jedna kolekcja zawiera się w drugiej: za pomocą tablicy czy zbioru?
sobes.tech AI
Odpowiedź od AI
Zbiór (Set) jest szybszy do sprawdzania, czy elementy są zawarte.
Wyjaśnienie:
- Tablica (Array): Sprawdzenie, czy element jest zawarty w tablicy, zajmuje średnio czas O(n), gdzie n to liczba elementów. Aby sprawdzić, czy jedna kolekcja jest zawarta w innej, potrzeba n iteracji, z których każda jest O(m), gdzie m to rozmiar drugiej kolekcji. Razem O(n*m).
- Zbiór (Set): Sprawdzenie, czy element jest zawarty w zbiorze, zajmuje średnio czas O(1). Aby sprawdzić, czy jedna kolekcja jest zawarta w innej, potrzeba n iteracji, każda O(1). Razem O(n).
Przykład z zbiorem:
- Utwórz
Setz pierwszej kolekcji. - Iteruj po drugiej kolekcji, sprawdzając, czy każdy element jest zawarty w utworzonym
Set.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]
// Utwórz zbiór z collection1
let set1 = Set(collection1)
// Sprawdź, czy collection2 jest podzbiorem collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }
print(isSubset) // Wypisze true