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) ժամանակում, և մենք անցնում ենք երկու զանգվածների յուրաքանչյուր տարրով մեկ անգամ։