Завдання
Враховуючи масив невід’ємних цілих чисел 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]
.