задача
Дан массив неотрицательных целых чисел 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]
.