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), а ние преминаваме през всеки елемент и на двата масива веднъж.