Tarefa
Dada uma matriz de números inteiros não negativos a
, determine o número mínimo de saltos para a direita necessários para pular "fora" da matriz, iniciando na posição 0, ou retornar zero / nulo se não for possível.
Um salto do índice i
é definido como um aumento no índice da matriz, no máximo a[i]
.
Um salto para fora é um salto em que o índice resultante do salto i
está fora dos limites da matriz, portanto, para indexação com base em 1 i>length(a)
e para indexação com base em 0 i>=length(a)
,.
Exemplo 1
Considere 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
O caminho mais curto "pulando" para sair dos limites tem comprimento 2
:
Nós poderíamos pular de 0->2->4->outside
qual tem comprimento, 3
mas 0->4->outside
tem comprimento, 2
então voltamos 2
.
Exemplo 2
Suponha 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
Nesse caso, é impossível pular fora da matriz, portanto, devemos retornar um valor zero / nulo ou qualquer valor não determinístico ∞
.
Exemplo 3
Suponha Array=[4]
:
Array[0] = 4 -> You can jump 4 field
Podemos pular diretamente do índice 0 fora da matriz, com apenas um salto, por isso retornamos 1
.
Editar:
Devido a várias perguntas sobre o valor de retorno: O retorno ∞
é totalmente válido, se não houver chance de escapar. Porque, se houver uma chance, podemos definir esse número.
Isso é código-golfe , então o código mais curto em bytes vence!
[2, 3, 1, 1]
.