# 55.jump-game

## Statement

• Difficulty: Medium
• Tag: `贪心` `数组` `动态规划`

``````输入：nums = [2,3,1,1,4]

``````

``````输入：nums = [3,2,1,0,4]

``````

• `1 <= nums.length <= 3 * 104`
• `0 <= nums[i] <= 105`

• Difficulty: Medium
• Tag: `Greedy` `Array` `Dynamic Programming`

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`

## Solution

``````from typing import List

class Solution:
def canJump(self, nums: List[int]) -> bool:
n = len(nums)
res = 0
for i, a in enumerate(nums):
if res < i:
return False

st = max(i, res)
res = max(res, i + a)

return True
``````