Ctrl K

Минимум в сдвинутом массиве с повторами

Сложная
Массив целых чисел, отсортированный по неубыванию, циклически сдвинули вправо на некоторое число позиций от 1 до n: за один сдвиг последний элемент переходит в начало. Например, [1, 3, 6, 8, 8] после трёх сдвигов становится [6, 8, 8, 1, 3], а после n сдвигов возвращается к исходному виду. В массиве могут быть повторяющиеся значения. Дан получившийся массив values. Верните его наименьший элемент, сделав как можно меньше шагов. Подумайте: как повторы влияют на сложность по сравнению со случаем различных элементов?
Пример 1
values=[6, 8, 8, 1, 3] → 1

Исходный массив [1, 3, 6, 8, 8] сдвинули на 3 позиции; минимум — 1.

Пример 2
values=[4, 4, 4, 4, 2, 4] → 2

Из-за повторов по краям и в середине стоит 4, и по ним одним не понять, в какой половине минимум. Ответ — 2.

Пример 3
values=[-3, 0, 7] → -3

Сдвиг на полный круг вернул массив к исходному виду.

Ограничения
  • 1 ≤ n = len(values) ≤ 5000
  • -5000 ≤ values[i] ≤ 5000
  • values — отсортированный массив, сдвинутый на 1…n позиций
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОбщая медиана двух массивов СложнаяРамка вокруг кляксы СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе СложнаяКоробка в коробке Сложная
загружаем Python…
Вход
values=[6, 8, 8, 1, 3]
Ожидается
1

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