สมมติว่าเรามีอาร์เรย์ของจำนวนเต็มที่ไม่ใช่ลบ เราอยู่ที่ดัชนีแรกของอาร์เรย์ แต่ละองค์ประกอบแทนความยาวการกระโดดสูงสุดที่ตำแหน่งนั้น เราต้องตรวจสอบว่าสามารถถึงดัชนีสุดท้ายได้หรือไม่ ตัวอย่างเช่น อาร์เรย์ [2,3,1,1,4] จะได้ผลลัพธ์ True เพราะกระโดด 1 ขั้นจากตำแหน่ง 0 ถึง 1 แล้วกระโดด 3 ขั้นจากตำแหน่ง 1 ถึงจุดสิ้นสุด
ขั้นตอนการทำงาน
n := length of array A - 1- วนลูป
i := n - 1ลงถึง-1:- ถ้า
A[i] + i > nให้n := i
- ถ้า
- คืนค่า
trueเมื่อn = 0มิฉะนั้นfalse
ตัวอย่างโค้ด
class Solution(object):
def canJump(self, nums):
n = len(nums) - 1
for i in range(n-1, -1, -1):
if nums[i] + i >= n:
n = i
return n == 0
ob1 = Solution()
print(ob1.canJump([2,3,1,1,4]))
อินพุต
[2,3,1,1,4]
เอาต์พุต
True