Sobes.tech
Middle

Как по-бързо да проверите дали една колекция е включена в друга: с помощта на масив или множество?

sobes.tech AI

Отговор от AI

Множество (Set) е по-бързо за проверка на включването на елементи.

Обяснение:

  • Масив (Array): Проверката дали даден елемент е включен в масив, отнема средно време O(n), където n е броят на елементите. За проверка дали една колекция е включена в друга, са необходими n итерации, всяка от които е O(m), където m е размерът на втората колекция. Общо O(n*m).
  • Множество (Set): Проверката дали елемент е включен в множество, отнема средно време O(1). За проверка дали една колекция е включена в друга, са необходими n итерации, всяка от които е O(1). Общо O(n).

Пример с множество:

  1. Създайте Set от първата колекция.
  2. Итерайте през втората колекция и проверете дали всеки елемент е включен в създадения Set.
let collection1: [Int] = [1, 2, 3, 4, 5]
let collection2: [Int] = [2, 4]

// Създаване на множество от collection1
let set1 = Set(collection1)

// Проверка дали collection2 е подмножество на collection1
let isSubset = collection2.allSatisfy { set1.contains($0) }

print(isSubset) // Ще изведе true