Ctrl K

Нити между карточками

Средняя
На столе два ряда карточек с числами: верхний top и нижний bottom, каждый в заданном порядке. Карточку сверху можно связать нитью с карточкой снизу, если на них одинаковые числа. Нити натянуты прямо и не должны пересекаться. К каждой карточке можно привязать не больше одной нити, так что даже общий конец считается пересечением. Верните наибольшее число нитей, которое можно протянуть.
Пример 1
top=[7, 3, 9, 3], bottom=[3, 7, 3, 9] → 3

Нити 7–7, 3–3 (вторая карточка сверху с третьей снизу) и 9–9 не пересекаются. Четвёртую нить не добавить: 3 сверху стоит правее 9, а снизу свободная 3 левее 9.

Пример 2
top=[4, 4, 4], bottom=[4, 4] → 2

Связать можно только две пары четвёрок: внизу всего две карточки, а у каждой карточки не больше одной нити.

Пример 3
top=[1, 2], bottom=[3, 4] → 0
Ограничения
  • 1 ≤ len(top), len(bottom) ≤ 500
  • 1 ≤ top[i], bottom[j] ≤ 2000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМеньше всего прыжков до конца СредняяСамая прибыльная серия дней СредняяДобраться до последней клетки СредняяМаршруты тележки по складу СредняяДешёвый маршрут из угла в угол Средняя
загружаем Python…
Вход
top=[7, 3, 9, 3], bottom=[3, 7, 3, 9]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 109 тестов на сервере, включая скрытые.