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 ididefinisikan sebagai peningkatan indeks array oleh paling a[i].
Sebuah luar melompat adalah lompatan di mana indeks yang dihasilkan dari melompat ikeluar-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->outsideyang memiliki panjang 3tetapi 0->4->outsidememiliki panjang 2sehingga 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].