Middle
JavaScript-ის დავალება: დაწერეთ ფუნქცია, რომელიც იღებს ორ მასივს და აბრუნებს მასივს, სადაც მხოლოდ ერთ მასივში არსებული ელემენტები იქნება (სიმეტრიული განსხვავება). შეფასეთ ალგორითმის სირთულე.
sobes.tech AI
პასუხი AI-სგან
აქ არის JavaScript-ის ფუნქციის მაგალითი, რომელიც აბრუნებს ორი მასივის სիմეტრიულ განსხვავებას:
function symmetricDifference(arr1, arr2) {
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const result = [];
for (const item of set1) {
if (!set2.has(item)) {
result.push(item);
}
}
for (const item of set2) {
if (!set1.has(item)) {
result.push(item);
}
}
return result;
}
ალგორითმის სირთულე — O(n + m), სადაც n და m არის შესასვლელი მასივების სიგრძეები. ეს განპირობებულია იმით, რომ Set-ში დამატებისა და შემოწმების ოპერაციები ხორციელდება ამორტიზირებულ O(1) დროში, და ჩვენ ვატარებთ თითოეულ ელემენტს ორივე მასივში ერთხელ.