задача
Дан массив неотрицательных целых чисел a определите минимальное количество прыжков вправо, необходимое для перехода «вне» массива, начиная с позиции 0 или возврата нуля / нуля, если это невозможно сделать.
Скачок из индекса iопределяется как увеличение индекса массива не более чем на a[i].
Прыжок снаружи скачок , где индекс в результате скачки iнаходится вне границ для массива, поэтому для индексации 1 на основе i>length(a), а также для индексации 0 на основе, i>=length(a).
Пример 1
Рассмотрим Array = [4,0,2,0,2,0]:
Array[0] = 4 -> You can jump 4 field
Array[1] = 0 -> You can jump 0 field
Array[2] = 2 -> You can jump 2 field
Array[3] = 0 -> You can jump 0 field
Array[4] = 2 -> You can jump 2 field
Array[5] = 0 -> You can jump 0 field
Кратчайший путь путем «прыжка» для выхода за пределы имеет длину 2:
Мы можем прыгать, у 0->2->4->outsideкоторого есть длина, 3но 0->4->outsideесть длина, 2поэтому мы возвращаемся 2.
Пример 2
Предположим Array=[0,1,2,3,2,1]:
Array[0] = 0 -> You can jump 0 fields
Array[1] = 1 -> You can jump 1 field
Array[2] = 2 -> You can jump 2 field
Array[3] = 3 -> You can jump 3 field
Array[4] = 2 -> You can jump 2 field
Array[5] = 1 -> You can jump 1 field
В этом случае невозможно выйти за пределы массива, поэтому мы должны вернуть ноль / ноль или любое недетерминированное значение, подобное ∞.
Пример 3
Предположим Array=[4]:
Array[0] = 4 -> You can jump 4 field
Мы можем напрямую перейти с индекса 0 за пределы массива всего одним прыжком, поэтому мы возвращаемся 1.
Редактировать:
Из-за нескольких вопросов о возвращаемом значении: Возврат ∞полностью действителен, если нет возможности сбежать. Потому что, если есть шанс, мы можем определить это число.
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
[2, 3, 1, 1].