Сортировка обоих списков. Тогда вы можете с уверенностью знать, что если следующая запись в списке A - это «cobble», а следующая запись в списке B - «определенная», то «cobble» отсутствует в списке B. Просто переместите указатель / счетчик в любой список результат с более низким рейтингом и возрастание рейтинга.
Например:
Список 1: D, B, M, A, I
Список 2: I, A, P, N, D, G
отсортирован:
Список 1: A, B, D, I, M
Список 2: A, D, G, I, N, P
A против A -> сопоставить, сохранить A, продвинуть оба
B против D -> B
D против D -> сопоставить, сохранить D, продвинуть оба
Я против G -> I> G, продвижение 2
I vs I -> матч, магазин I, продвижение обоих
М против Н -> М
В списке 1 больше нет предметов, выход.
Список матчей A, D, I
2 списка сортирует O (n log (n)), плюс сравнение O (n) делает это O (n (log (n) + 1)).