Ctrl K

Следующее большее справа

Лёгкая
Дан список line из различных неотрицательных целых чисел и список запросов queries — тоже различные числа, каждое из которых встречается в line. Для каждого запроса найдите его место в line и посмотрите вправо: первое число, которое больше запроса, и есть ответ. Если правее большего числа нет, ответ -1. Верните ответы в том же порядке, что и запросы. Решение за O(len(queries) · len(line)) напрашивается; попробуйте за O(len(queries) + len(line)).
Пример 1
queries=[7, 2, 9], line=[5, 7, 2, 4, 9, 1] → [9, 4, -1]

Правее 7 стоят 2, 4, 9 — первое большее число 9. Правее 2 первым больше оказывается 4. Правее 9 есть только 1, большего нет — ответ -1.

Пример 2
queries=[3], line=[8, 6, 3] → [-1]

3 стоит последним, правее никого нет.

Пример 3
queries=[10, 0], line=[0, 10, 20] → [20, 10]
Ограничения
  • 1 ≤ len(queries) ≤ len(line) ≤ 10⁵
  • 0 ≤ значения ≤ 10⁵
  • Все числа в line различны, все числа в queries различны
  • Каждый запрос есть в line
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПеревес тяжёлых смен СредняяСкидка от соседа подешевле ЛёгкаяВода между стенами СложнаяСамый большой прямоугольник под силуэтом СложнаяСамый большой горящий блок Сложная
загружаем Python…
Вход
queries=[7, 2, 9], line=[5, 7, 2, 4, 9, 1]
Ожидается
[9, 4, -1]

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