Görev
Negatif olmayan bir tamsayı dizisi verildiğinde, dizinin a
"dışına" atlamak, 0 konumundan başlayarak veya mümkün değilse sıfır / null döndürmek için gereken minimum sağa atlama sayısını belirleyin.
Dizinden atlama , i
dizi dizininde en fazla artış olarak tanımlanır a[i]
.
Bir sıçrama dış atlama kaynaklanan göstergesi bir atlama i
yani 1 tabanlı bir dizin için, dışı sınırları dizisi için i>length(a)
, ve 0 tabanlı dizin için i>=length(a)
.
örnek 1
Şunları düşünün 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
Sınırların dışına çıkmak için "zıplayarak" en kısa yolun uzunluğu vardır 2
:
Biz atlama olabilir 0->2->4->outside
hangi uzunluğa sahiptir 3
fakat 0->4->outside
uzunluğa sahiptir 2
dönmek böylece 2
.
ÖRNEK 2
Varsayalım 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
Bu durumda, dizinin dışına atlamak imkansızdır, bu nedenle sıfır / null veya herhangi bir deterministik olmayan değer döndürmeliyiz ∞
.
ÖRNEK 3
Varsayalım Array=[4]
:
Array[0] = 4 -> You can jump 4 field
Dizinin dışından 0 dizininden doğrudan tek bir atlama ile atlayabiliriz, bu yüzden geri döneriz 1
.
Düzenle:
Dönüş değeri hakkında birden fazla soru nedeniyle: İade ∞
Kaçış şansı yoksa tamamen geçerlidir. Çünkü bir şans varsa, o sayıyı tanımlayabiliriz.
Bu kod golf , bu yüzden bayt içindeki en kısa kod kazanır!
[2, 3, 1, 1]
.