สมมติว่าเรามีตัวเลขอาร์เรย์หนึ่งตัว โดยที่องค์ประกอบทั้งหมดเป็นค่าบวก เราอยู่ที่ดัชนี 0 ในที่นี้ แต่ละองค์ประกอบในอาร์เรย์แสดงถึงความยาวกระโดดสูงสุดของเราที่ตำแหน่งนั้น เป้าหมายของเราคือไปให้ถึงดัชนีสุดท้าย (n-1 โดยที่ n คือขนาดของ nums) โดยมีจำนวนการกระโดดน้อยลง ดังนั้นหากอาร์เรย์เป็นเหมือน [2,3,1,1,4] แล้วผลลัพธ์จะเป็น 2 เนื่องจากเราสามารถข้ามไปที่ดัชนี 1 จาก 0 แล้วข้ามไปที่ดัชนี 4 นั่นคือดัชนีสุดท้ายพี>
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- จบ :=0, กระโดด :=0, ไกลที่สุด :=0
- สำหรับ i ในช่วง 0 ถึงความยาวของ nums – 1
- ไกลที่สุด :=สูงสุดของที่ไกลที่สุดและ nums[i] + i
- ถ้าฉันสิ้นสุด และฉันไม่ใช่ความยาวของ nums – 1 แล้ว
- เพิ่มการกระโดดขึ้น 1
- จบ :=ไกลที่สุด
- กระโดดกลับ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution(object): def jump(self, nums): end = 0 jumps = 0 farthest = 0 for i in range(len(nums)): farthest = max(farthest,nums[i]+i) if i == end and i != len(nums)-1: jumps+=1 end = farthest return jumps ob = Solution() print(ob.jump([3, 4, 3, 0, 1]))
อินพุต
[3, 4, 3, 0, 1]
ผลลัพธ์
2