งาน
กำหนดอาเรย์ของจำนวนเต็มแบบไม่ลบa
กำหนดจำนวนต่ำสุดของการกระโดดทางขวาที่จำเป็นในการข้าม "นอก" อาเรย์เริ่มต้นที่ตำแหน่ง 0 หรือคืนค่าศูนย์ / โมฆะถ้าไม่สามารถทำได้
กระโดดจากดัชนีถูกกำหนดให้เป็นการเพิ่มขึ้นของดัชนีอาร์เรย์โดยที่มากที่สุดi
a[i]
กระโดดนอกเป็นกระโดดที่ดัชนีที่เกิดจากการกระโดดที่i
จะออกนอกสนามสำหรับอาร์เรย์เพื่อให้การจัดทำดัชนี 1-based i>length(a)
และสำหรับการจัดทำดัชนี i>=length(a)
0-based
ตัวอย่างที่ 1
พิจารณา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
เส้นทางที่สั้นที่สุดโดย "กระโดด" เพื่อออกนอกขอบเขตมีความยาว2
:
เราสามารถกระโดดจาก0->2->4->outside
ที่มีความยาว3
แต่0->4->outside
มีความยาวเพื่อให้เรากลับมา2
2
ตัวอย่างที่ 2
สมมติว่า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
ในกรณีนี้มันเป็นไปไม่ได้ที่จะข้ามไปนอกอาร์เรย์ดังนั้นเราควรจะกลับเป็นศูนย์ / null หรือค่ากำหนดใด ๆ ∞
ที่ไม่ใช่เช่น
ตัวอย่างที่ 3
สมมติว่าArray=[4]
:
Array[0] = 4 -> You can jump 4 field
เราโดยตรงสามารถกระโดดจากดัชนี 0 1
นอกอาร์เรย์ที่มีเพียงหนึ่งกระโดดเพื่อให้เรากลับมา
แก้ไข:
เนื่องจากคำถามหลายข้อเกี่ยวกับค่าส่งคืน: การส่งคืน∞
ถูกต้องทั้งหมดหากไม่มีโอกาสหลบหนี เพราะหากมีโอกาสเราสามารถกำหนดหมายเลขนั้นได้
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ!
[2, 3, 1, 1]
เช่น