สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งแต่ละหมายเลขจะแสดงจำนวนการกระโดดสูงสุดที่เราสามารถทำได้ เราต้องตรวจสอบว่าเราสามารถเข้าถึงดัชนีสุดท้ายเริ่มต้นที่ดัชนี 0 ได้หรือไม่
ดังนั้น หากอินพุตเป็น nums =[2,5,0,2,0] เอาต์พุตจะเป็น True เนื่องจากเราสามารถข้ามจากดัชนี 0 ถึง 1 แล้วกระโดดจากดัชนี 1 ไปยังจุดสิ้นสุดได้
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้-
-
n :=ขนาดของ nums
-
arr :=อาร์เรย์ขนาด n และเติมเท็จ
-
arr[n - 1] :=จริง
-
สำหรับฉันอยู่ในช่วง n - 2 ถึง 0, ลดลง 1 ทำ
-
arr[i] :=true หาก arr[จากดัชนี i + 1 ถึง i + nums[i]] อันใดอันหนึ่งเป็นจริง
-
-
กลับ arr[0]
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums): n = len(nums) arr = [False] * n arr[n - 1] = True for i in range(n - 2, -1, -1): arr[i] = any(arr[i + 1 : i + nums[i] + 1]) return arr[0] ob = Solution() nums = [2,5,0,2,0] print(ob.solve(nums))
อินพุต
[2,5,0,2,0]
ผลลัพธ์
True