Используйте инвертированный индекс (хэш-таблицу), чтобы получить значение O (n). Поместите все элементы первого списка в одну хеш-таблицу. Затем выполните итерацию по всем элементам второго списка, просматривая каждый элемент в хэш-таблице.
Чего я не знаю, так это как вы определяете подобное. Если сходство просто в том, что элементы в двух списках равны, то это будет работать. Однако, если сходство является более сложным, вам может потребоваться создать несколько хеш-таблиц для каждого типа возможного сходства. Например, у вас может быть одна хеш-таблица, которая отключает фонетическое написание слова, а другая - точную строку слова.
Если у вас есть один большой список, такой как список вакансий, и вы хотите запросить список кандидатов на квалификацию, вам действительно следует использовать поисковую систему. Поисковая система - это просто набор хеш-таблиц с ключевыми словами. Нет смысла перестраивать поисковую систему, если вы можете использовать уже созданную. Сначала вы индексируете все вакансии, а затем запрашиваете поисковую систему, используя слова из резюме кандидата. Популярная поисковая система с открытым исходным кодом, на которую вы, возможно, захотите взглянуть: Solr .