mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
46 lines
1.2 KiB
Plaintext
46 lines
1.2 KiB
Plaintext
---
|
|
title: '55. Jump Game'
|
|
description: 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
|
|
icon: dot
|
|
topics:
|
|
- { name: "Array", slug: "array" }
|
|
- { name: "Dynamic Programming", slug: "dynamic-programming" }
|
|
- { name: "Greedy", slug: "greedy" }
|
|
issue: "https://github.com/prdlk/leetcode/issues/175"
|
|
sidebar:
|
|
label: 'Jump Game'
|
|
badge: 'Medium'
|
|
---
|
|
|
|
### 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 <= 10^4`
|
|
- `0 <= nums[i] <= 10^5`
|
|
|
|
## Solution
|
|
|
|
```py
|
|
class Solution:
|
|
def canJump(self, nums: list[int]) -> bool:
|
|
best, last = nums[0], len(nums) - 1
|
|
|
|
for i in range(last):
|
|
if i > best:
|
|
return False
|
|
else:
|
|
pos = nums[i] + i
|
|
best = max(best, pos)
|
|
|
|
return best >= last
|
|
```
|