Ctrl K

Самый популярный маршрут из трёх страниц

Средняя
Сайт записывает каждое посещение страницы: i-я запись говорит, что пользователь user[i] открыл страницу page[i] в момент времени time[i]. Записи в массивах лежат в произвольном порядке. **Маршрут** — это список из трёх страниц (они могут повторяться). Пользователь **прошёл** маршрут, если в его истории посещений, упорядоченной по времени, встречаются эти три страницы именно в таком порядке. Идти подряд им не обязательно: между ними могут быть и другие страницы. Например, маршрут ["home", "home", "home"] прошёл тот, кто открывал home хотя бы три раза. **Счёт** маршрута — число разных пользователей, которые его прошли (каждый считается один раз, сколько бы раз он ни прошёл маршрут). Верните маршрут с наибольшим счётом. Если таких несколько, верните наименьший из них в лексикографическом порядке: сравниваются первые страницы, при равенстве — вторые, затем третьи.
Пример 1
user=['ann', 'ann', 'ann', 'ben', 'ben', 'ben', 'ben'], time=[1, 2, 3, 4, 5, 6, 7], page=['news', 'shop', 'cart', 'news', 'blog', 'shop', 'cart'] → ['news', 'shop', 'cart']

Маршрут ["news", "shop", "cart"] прошли оба пользователя: у Бена между news и shop есть заход на blog, но это не мешает. Остальные маршруты прошёл только Бен.

Пример 2
user=['kim', 'kim', 'kim', 'kim'], time=[40, 10, 30, 20], page=['b', 'a', 'a', 'c'] → ['a', 'a', 'b']

Записи идут не по времени. Упорядочив их, получаем a → c → a → b. Маршрутов четыре, у каждого счёт 1, и наименьший по алфавиту — ["a", "a", "b"].

Пример 3
user=['x', 'y', 'x', 'y', 'x', 'y'], time=[1, 2, 3, 4, 5, 6], page=['p', 'q', 'p', 'q', 'p', 'q'] → ['p', 'p', 'p']

У x есть только маршрут p → p → p, у y — только q → q → q. Счёт равный, выигрывает ["p", "p", "p"].

Ограничения
  • 3 ≤ len(user) ≤ 50
  • len(time) == len(page) == len(user)
  • 1 ≤ time[i] ≤ 10⁹
  • Имена пользователей и страниц — строки длиной от 1 до 10 из строчных латинских букв и цифр
  • У одного пользователя нет двух записей с одинаковым временем
  • Хотя бы у одного пользователя не меньше трёх записей
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазложить анаграммы по группам СредняяБольше трети голосов СредняяСамые частые значения СредняяПодпоследовательность только одного слова СредняяПары с заданной разницей Средняя
загружаем Python…
Вход
user=['ann', 'ann', 'ann', 'ben', 'ben', 'ben', 'ben'], time=[1, 2, 3, 4, 5, 6, 7], page=['news', 'shop', 'cart', 'news', 'blog', 'shop', 'cart']
Ожидается
['news', 'shop', 'cart']

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