Ctrl K

Стопка блинов и лопатка

Средняя
Повар держит стопку из n блинов разного размера: stack[0] — верхний блин, размеры — числа от 1 до n. Единственное, что он умеет, — подсунуть лопатку под k-й сверху блин и перевернуть верхние k блинов разом (их порядок меняется на обратный). Цель — сложить стопку так, чтобы сверху вниз шли 1, 2, …, n. Повар действует строго по правилу: для size от n до 2 - если блин size уже стоит на своём месте (позиция size - 1 сверху), ничего не делает; - иначе, если блин size не наверху, переворачивает стопку до него включительно, чтобы он оказался сверху; - затем переворачивает верхние size блинов, и блин size встаёт на место. Верните список значений k всех переворотов в том порядке, в каком их сделает повар.
Пример 1
stack=[2, 3, 1] → [2, 3]

Самый большой блин 3 стоит вторым: переворот 2 даёт [3, 2, 1], переворот 3 — [1, 2, 3]. Дальше блин 2 уже на месте.

Пример 2
stack=[4, 1, 2, 3] → [4, 3]

Блин 4 уже наверху, поэтому сразу переворот 4: [3, 2, 1, 4]. Затем блин 3 наверху — переворот 3, и стопка собрана.

Пример 3
stack=[1, 2, 3] → []

Стопка уже собрана, переворачивать нечего.

Ограничения
  • 1 ≤ len(stack) ≤ 100
  • stack — перестановка чисел от 1 до len(stack)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяПерестроить середину шеренги СредняяТройки палочек для треугольника СредняяСамая выгодная подработка для каждого СредняяРасстановка против соперников Средняя
загружаем Python…
Вход
stack=[2, 3, 1]
Ожидается
[2, 3]

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