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