Sobes.tech
Middle

Ինչպե՞ս արագ ստուգել, արդյոք մեկ հավաքածուն մյուսի մեջ է՝ օգտագործելով զանգված կամ հավաքածու։

sobes.tech AI

Պատասխան AI-ից

Տվյալների հավաքածու (Set) ավելի արագ է տարրերի ներառվածությունը ստուգելու համար:

Ներկայացում՝

  • Արrey (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]

// Ստեղծել `Set` collection1-ից
let set1 = Set(collection1)

// Ստուգել, արդյոք collection2-ը ենթահավաք է collection1-ի
let isSubset = collection2.allSatisfy { set1.contains($0) }

print(isSubset) // Տպել true