Ответ
Наивное решение с вложенными циклами имеет сложность O(n*m), где n и m — длины массивов.
Оптимальное решение с использованием хэш-таблицы (Set):
- Создаем Set из первого массива — O(n)
- Фильтруем второй массив, оставляя элементы из Set — O(m)
- Общая сложность — O(n + m)
Пример:
function intersection(arr1, arr2) {
const set = new Set(arr1);
return arr2.filter(item => set.has(item));
}
Если массивы отсортированы, можно использовать метод двух указателей со сложностью O(n + m) без дополнительной памяти.