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):
Օրինակ՝ հավաքածուով:
- Ստեղծել
Setառաջին հավաքածուից: - Իտերացնել երկրորդ հավաքածուով և ստուգել, թե արդյոք յուրաքանչյուր տարր պարունակվում է ստեղծված
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