Я знаю, что этот тип вопросов повторялся в сообществе, но мой вопрос немного отличается от других.Найти общие элементы в двух массивах в сложность линейного времени
Сегодня я столкнулся с опросом известной компании. Они задали мне два технических вопроса: один из вопросов был ...
Я дал два несортированных массива длины n, они попросили меня найти общие элементы массивов, но с алгоритмом временной сложности O (n) ,
Нет дополнительной поддержки, связанной с языком.
Я показал им алгоритм со сложностью времени O (n * log (n)), но они не были удовлетворены. Я просто хочу знать Если существует какой-либо алгоритм такого рода.
Поместите все элементы в HashSet? – Ordous
Поскольку вставка и поиск хэш-таблицы - это 'O (1)', просто вставьте каждый элемент в хеш-таблицу. Проверьте, что он уже находится в хеш-таблице, если это так, поместите в другой список (который будет вашими общими элементами). Это должно привести к чему-то вроде сложности «2n' (проходя через элементы обоих массивов), которая является« o (n) » –
@RNar Да, это возможно, но для этого потребуется дополнительное пространство, и, как я знаю, хеш-таблицы принимают много места, чем массив. Также они сказали мне, что ** нет языковой поддержки ** для использования. –