Middle
JavaScript užduotis: parašykite funkciją, kuri priima du masyvus ir grąžina masyvą iš elementų, kurie yra tik viename iš jų (simetrinė skirtumas). Įvertinkite algoritmo sudėtingumą.
sobes.tech AI
Atsakymas iš AI
Štai pavyzdys JavaScript funkcijos, kuri grąžina dviejų masyvų simetrinę skirtumą:
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;
}
Algoritmo sudėtingumas — O(n + m), kur n ir m yra įvesties masyvų ilgiai. Tai yra todėl, kad Set operacijos pridėjimui ir patikrinimui vykdomos amortizuotu O(1) laiku, ir mes praeiname per kiekvieną abiejų masyvų elementą vieną kartą.