Sobes.tech
Middle

Úloha v JavaScripte: napíšte funkciu, ktorá prijíma dva pola a vracia pole prvkov, ktoré sú prítomné iba v jednom z nich (súmerná rozdielnosť). Vyhodnoťte zložitosť algoritmu.

sobes.tech AI

Odpoveď od AI

Tu je príklad funkcie v JavaScripte, ktorá vracia symetrický rozdiel dvoch polí:

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;
}

Zložitosť algoritmu je — O(n + m), kde n a m sú dĺžky vstupných polí. To je spôsobené tým, že operácie pridania a kontroly v Set sa vykonávajú v amortizovanom čase O(1), a prechádzame každý prvok oboch polí raz.