class Solution:
def canJump(self, nums: List[int]) -> bool:
goal = len(nums) - 1
for i in range(len(nums) - 2, -1,-1):
if i + nums[i] >= goal:
goal = i
return goal == 0
class Solution:
def jump(self, nums: List[int]) -> int:
steps = 0
l, r =0, 0
while r < len(nums) - 1:
farthest = 0
for i in range(l, r + 1):
farthest = max(farthest, i + nums[i])
l = r + 1
r = farthest
steps += 1
return steps