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