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:
- Sukurkite
Setiš pirmos kolekcijos. - 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