Ctrl K

Самый дешёвый порядок по кругу

Сложная
Дан массив links — перестановка чисел 0, 1, …, n - 1. Порядок order — тоже перестановка этих чисел, и её элементы стоят по кругу: за последним снова идёт первый. Стоимость порядка: |order[0] - links[order[1]]| + |order[1] - links[order[2]]| + … + |order[n - 1] - links[order[0]]|. Верните порядок наименьшей стоимости. Если таких несколько, верните лексикографически наименьший.
Пример 1
links=[2, 0, 1] → [0, 1, 2]

Для порядка [0, 1, 2]: |0 - links[1]| + |1 - links[2]| + |2 - links[0]| = 0 + 0 + 0 = 0 — дешевле не бывает.

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

Порядок [0, 1, 3, 2] стоит 0 + 1 + 0 + 1 = 2. Есть и другие порядки стоимостью 2, но этот лексикографически наименьший.

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

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