Sobes.tech
Middle

Kaip greičiau patikrinti, ar viena kolekcija yra kitoje: naudojant masyvą ar rinkinį?

sobes.tech AI

Atsakymas iš AI

Rinkinys (Set) yra greitesnis elementų įtraukimui.

Paaiškinimas:

  • Masivas (Array): Patikrinti, ar elementas yra masyve, vidutiniškai užtrunka O(n) laiką, kur n — elementų skaičius. Norint patikrinti, ar viena kolekcija yra įtraukta į kitą, reikia n kartų iteruoti, kiekvieną kartą — O(m), kur m — antros kolekcijos dydis. Iš viso — O(n*m).
  • Rinkinys (Set): Patikrinti, ar elementas yra rinkinyje, vidutiniškai užtrunka O(1). Norint patikrinti, ar viena kolekcija yra įtraukta į kitą, reikia n kartų iteruoti, kiekvieną — O(1). Iš viso — O(n).

Pavyzdys su rinkiniu:

  1. Sukurkite Set iš pirmos kolekcijos.
  2. Iteruokite per antrą kolekciją ir patikrinkite, ar kiekvienas elementas yra įtrauktas į sukurtą Set.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]

// Sukurkite `Set` iš collection1
let set1 = Set(collection1)

// Patikrinkite, ar collection2 yra subset iš collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }

print(isSubset) // Išves true