Количество совпадающих чисел
Вы решили задачу. Теперь можно сравнить подходы.
Пересечение множеств оставляет общие различные числа.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Пересечение
Повторы внутри списков не влияют на число общих значений.
a = set(map(int, input().split()))
b = set(map(int, input().split()))
print(len(a & b))
Время: O(n+m) в среднем. Память: O(n+m).
Другой способ: Два указателя
В отсортированных списках сдвигаем указатель у меньшего значения, а при совпадении оба.
a = sorted(set(map(int, input().split())))
b = sorted(set(map(int, input().split())))
i = j = count = 0
while i < len(a) and j < len(b):
if a[i] == b[j]:
count += 1
i += 1
j += 1
elif a[i] < b[j]:
i += 1
else:
j += 1
print(count)
Время: O(n log n + m log m). Память: O(n+m).
На что обратить внимание
- Считаются различные общие значения, а не пары вхождений.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.