Tugas
Diberikan array bilangan bulat non-negatif a
, tentukan jumlah minimum lompatan ke kanan yang diperlukan untuk melompat "di luar" larik, mulai dari posisi 0, atau kembalikan nol / nol jika tidak memungkinkan untuk melakukannya.
Sebuah lompatan dari indeks i
didefinisikan sebagai peningkatan indeks array oleh paling a[i]
.
Sebuah luar melompat adalah lompatan di mana indeks yang dihasilkan dari melompat i
keluar-of-batas untuk array, sehingga untuk mengindeks berbasis 1 i>length(a)
, dan untuk mengindeks 0 berbasis, i>=length(a)
.
Contoh 1
Pertimbangkan 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
Jalur terpendek dengan "melompat" untuk keluar batas memiliki panjang 2
:
Kita bisa melompat dari 0->2->4->outside
yang memiliki panjang 3
tetapi 0->4->outside
memiliki panjang 2
sehingga kita kembali 2
.
Contoh 2
Misalkan 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
Dalam kasus ini, tidak mungkin untuk melompat keluar dari array, jadi kita harus mengembalikan nilai nol / null atau non deterministik seperti apa ∞
.
Contoh 3
Misalkan Array=[4]
:
Array[0] = 4 -> You can jump 4 field
Kami dapat langsung melompat dari indeks 0 di luar array, hanya dengan satu lompatan, jadi kami kembali 1
.
Edit:
Karena beberapa pertanyaan tentang nilai pengembalian: Pengembalian ∞
benar-benar valid, jika tidak ada kesempatan untuk melarikan diri. Karena, jika ada kesempatan, kita bisa mendefinisikan angka itu.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
[2, 3, 1, 1]
.