Search
⌘K
Get Premium
Greedy Algorithms

Jump Game

medium

DESCRIPTION (inspired by Leetcode.com)

Write a function to determine whether you can travel from the first index to the last index of an integer array nums, where each number in the array specifies the maximum distance you can jump from that index. The function should return true if reaching the last index is possible, and false otherwise.

Input:

nums = [1, 3, 0, 1, 4]

Output:

true

Explanation: You can jump from index 0 to index 1, then jump from index 1 to index 4 which is the last index.

Example: Input:

nums = [2,2,1,0,5,1,1]

Output:

false

Explanation: The first three indexes take you to index 3 no matter what. But you cannot move beyond index 3 because its maximum jump length is 0, making the indexes after index 3 unreachable.

Explanation

Given an array where each element represents the maximum jump length from that position, determine if you can reach the last index starting from the first index.

Building Intuition

Think of each index as a platform. The value at each platform tells you the maximum distance you can jump from there. You need to figure out: can you reach the goal?
2311401234nums =StartGoalValue = max jump distance= Goal (index n-1)
The question isn't about how to get there - just whether it's possible.

The Greedy Insight

We don't need to track every possible path. We just need to track the farthest position we can reach so far.
2311401234max_reach = 2From index 0, we canreach up to index 2.max_reach = 0 + 2 = 2
As we iterate through the array:
  • At each position i, update max_reach = max(max_reach, i + nums[i])
  • If i > max_reach, we're stuck - return false
  • If we finish the loop, return true

Walkthrough

Let's trace through nums = [2, 3, 1, 1, 4]:
2311401234i=0:i=0 ≤ max_reach=0 ✓max_reach = max(0, 0+2) = 2
i=0: Can we reach index 0? Yes (we start here). From here, we can reach up to index 2. max_reach = 2.
2311401234i=1:i=1 ≤ max_reach=2 ✓max_reach = max(2, 1+3) = 4
i=1: Can we reach index 1? Yes (1 ≤ 2). From here, we can reach up to index 4! max_reach = 4.
2311401234i=2:i=2 ≤ max_reach=4 ✓max_reach = max(4, 2+1) = 4
i=2: Can we reach index 2? Yes (2 ≤ 4). max_reach stays 4.
We continue... max_reach = 4 >= n-1 = 4. Answer: true!

When It Fails

What if we can't reach the end? Consider nums = [3, 2, 1, 0, 4]:
3210401234At i=3:max_reach = 3nums[3] = 0, can't go furtherStuck! Return false
At index 3, nums[3] = 0 means we can't jump anywhere. Since max_reach = 3 and we need to reach index 4, we're stuck.

Visualization

|
comma-separated integers
Try these examples:
Visualization
def canJump(nums):
max_reach = 0
for i in range(len(nums)):
if i > max_reach:
return False
max_reach = max(max_reach, i + nums[i])
return True
2031121344

Checking if we can reach the last index

0 / 12

Try [3, 2, 1, 0, 4] to see a case that returns false!
Test Your Knowledge

Login to take the complexity quiz and track your progress

Complexity Analysis

Time Complexity: O(n) We iterate through the array exactly once.

Space Complexity: O(1) We only use one variable (max_reach) regardless of input size.

Mark as read

Your account is free and you can post anonymously if you choose.

Unlock Premium Coding Content

Interactive algorithm visualizations
Reading Progress

On This Page