Sobes.tech
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:

  1. Utwórz Set z pierwszej kolekcji.
  2. 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