Нахождение элементов второго массива, отсутствующих в первом

Преобразуйте первый массив в множество и отфильтруйте второй по отсутствию в нём. Порядок и повторы второго массива сохраняются; ожидаемое время — O(n+m).

Короткий ответ

Что ответить на собеседовании

Преобразуйте первый массив в множество и отфильтруйте второй по отсутствию в нём. Порядок и повторы второго массива сохраняются; ожидаемое время — O(n+m).

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию, принимающую два массива целых чисел. Необходимо вернуть все элементы из второго массива, которые не встречаются в первом. Можно использовать любые подходящие структуры данных для оптимизации поиска.

Ответ

Преобразуйте первый массив в множество и отфильтруйте второй по отсутствию в нём. Порядок и повторы второго массива сохраняются; ожидаемое время — O(n+m).

Реализация для целых чисел:

def missing_from_first(first, second):
    known = set(first)
    return [value for value in second if value not in known]

Для first=[1, 2] и second=[2, 3, 3, 4] результат [3, 3, 4]. Это не вычитание количеств вхождений: любое присутствие числа в первом массиве исключает все такие значения из второго. Если нужны только уникальные результаты, это отдельное требование. Входные массивы не меняются.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее