```
class Solution(object):
def canJump(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
# linear walk updating the number of remaining steps.
steps = 1
for v in nums[:-1]:
steps -= 1
if v == 0 and steps == 0:
return False
else:
steps = max(steps, v)
return True
```

This seems easier to read and understand than the editorial solution. Since you are given the opportunity to move *up to* x steps at each given index, you can just keep a running total of the total number of steps you have remaining, and update them while parsing each element in the list. That means subtracting 1 for each step, then either continuing with the steps you have, or instead using the steps given at that index.