# 55. Jump Game

You are given an integer array `nums`

. You are initially positioned at the array's **first index**, and each element in the array represents your maximum jump length at that position.

Return `true`

* if you can reach the last index, or *`false`

* otherwise*.

**Example 1:**

**Input:** nums = [2,3,1,1,4]

**Output:** true

**Explanation:** Jump 1 step from index 0 to 1, then 3 steps to the last index.

**Example 2:**

**Input:** nums = [3,2,1,0,4]

**Output:** false

**Explanation:** You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index.

**Constraints:**

`1 <= nums.length <= 104`

`0 <= nums[i] <= 105`

[想法]

Since we want to know if we can reach the last element, let’s set `goal = len(nums)-1`

Next, let’s back forward to check if the previous element can reach the goal, `nums[i] >= goal — i`

, if so, then update the goal to the previous element

Finally, check if the goal is equal to 0, if so, that means we are able to reach the last element

[Python Code]

`def canJump(self, nums: List[int]) -> bool:`

goal = len(nums) - 1

for i in range(len(nums)-1, -1, -1):

if nums[i] >= goal - i:

goal = i

return True if goal==0 else False