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