Compito
Dato un array di numeri interi non negativi a
, determinare il numero minimo di salti a destra necessari per saltare "all'esterno" dell'array, iniziando dalla posizione 0 o restituendo zero / null se non è possibile farlo.
Un salto dall'indice i
è definito come un aumento dell'indice dell'array al massimo a[i]
.
Un salto all'esterno è un salto in cui l'indice risultante dal salto i
è fuori limite per l'array, quindi per l'indicizzazione basata su 1 i>length(a)
e per l'indicizzazione basata su 0 i>=length(a)
.
Esempio 1
Considera 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
Il percorso più breve "saltando" per uscire dai limiti ha una lunghezza 2
:
Potremmo saltare da 0->2->4->outside
cui ha lunghezza 3
ma 0->4->outside
ha lunghezza 2
quindi torniamo 2
.
Esempio 2
Supponiamo che 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
In questo caso, è impossibile saltare fuori dall'array, quindi dovremmo restituire uno zero / null o qualsiasi valore non deterministico come ∞
.
Esempio 3
Supponiamo che Array=[4]
:
Array[0] = 4 -> You can jump 4 field
Possiamo saltare direttamente dall'indice 0 all'esterno dell'array, con un solo salto, quindi torniamo 1
.
Modificare:
A causa di più domande sul valore di ritorno: il reso ∞
è totalmente valido, se non c'è possibilità di scappare. Perché, se esiste una possibilità, possiamo definire quel numero.
Questo è code-golf , quindi vince il codice più corto in byte!
[2, 3, 1, 1]
.