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 i
là 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 3
nhưng 0->4->outside
có 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]
.