Ctrl K

Повернуть кольцо для совпадений

Средняя
Даны два массива одинаковой длины n: ring и pattern. Позиция i считается совпавшей, если ring[i] == pattern[i]. Массив ring можно сколько угодно раз циклически сдвигать вправо: за один сдвиг каждый элемент переходит с позиции i на позицию (i + 1) mod n, а последний становится первым. Массив pattern не меняется. Верните наибольшее число совпавших позиций, которого можно добиться сдвигами.
Пример 1
ring=[4, 8, 1, 6], pattern=[1, 6, 4, 8] → 4

После двух сдвигов ring превращается в [1, 6, 4, 8] и совпадает с pattern во всех четырёх позициях.

Пример 2
ring=[2, 2, 5], pattern=[5, 3, 2] → 2

Сдвиг на 1 даёт [5, 2, 2]: совпадают позиции 0 и 2. Совпасть позиции 1 не может — числа 3 в ring нет.

Пример 3
ring=[1, 2, 3], pattern=[7, 8, 9] → 0
Ограничения
  • len(ring) = len(pattern)
  • 1 ≤ len(ring) ≤ 3000
  • 1 ≤ ring[i], pattern[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТри в ряд до упора СредняяДва садовника и доливки СредняяРасставить пробелы по меткам СредняяПлюс, минус, плюс СредняяРазложить по трём кучкам Средняя
загружаем Python…
Вход
ring=[4, 8, 1, 6], pattern=[1, 6, 4, 8]
Ожидается
4

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