Bài tập
Cho một mảng các số nguyên không âm a, xác định số lần nhảy phải tối thiểu cần thiết để nhảy "bên ngoài" mảng, bắt đầu từ vị trí 0 hoặc trả về 0 / null nếu không thể làm như vậy.
Một bước nhảy từ chỉ mục iđược xác định là tăng chỉ số mảng nhiều nhất a[i].
Một bên ngoài nhảy là một bước nhảy mà chỉ số phát sinh từ việc nhảy ilà out-of-bounds cho mảng, vì vậy cho chỉ mục 1-based i>length(a), và cho chỉ mục 0 dựa trên i>=length(a).
ví dụ 1
Hãy xem xét 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
Con đường ngắn nhất bằng cách "nhảy" ra khỏi giới hạn có chiều dài 2:
Chúng tôi có thể nhảy từ 0->2->4->outsideđó có chiều dài 3nhưng 0->4->outsidecó chiều dài 2để chúng tôi quay trở lại 2.
Ví dụ 2
Giả sử 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
Trong trường hợp này, không thể nhảy ra ngoài mảng, vì vậy chúng ta nên trả về giá trị 0 / null hoặc bất kỳ giá trị không xác định nào như ∞.
Ví dụ 3
Giả sử Array=[4]:
Array[0] = 4 -> You can jump 4 field
Chúng ta có thể nhảy trực tiếp từ chỉ số 0 bên ngoài mảng, chỉ với một lần nhảy, vì vậy chúng ta quay trở lại 1.
Biên tập:
Do nhiều câu hỏi về giá trị trả về: Trả về ∞là hoàn toàn hợp lệ, nếu không có cơ hội thoát ra. Bởi vì, nếu có cơ hội, chúng ta có thể định nghĩa con số đó.
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!
[2, 3, 1, 1].