Преобразуйте первый массив в множество и отфильтруйте второй по отсутствию в нём. Порядок и повторы второго массива сохраняются; ожидаемое время — 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]. Это не вычитание количеств вхождений: любое присутствие числа в первом массиве исключает все такие значения из второго. Если нужны только уникальные результаты, это отдельное требование. Входные массивы не меняются.