Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources
Jump Game

Jump Game

Problem Statement

You’re a jumper in an array where each element represents the maximum jump length from that position. Starting at index 0, determine if you can reach the last index. This medium-level greedy problem is all about stretching your leaps to cover the distance—can you make it to the end?

Example

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

Output: true (0→1→4 reaches the end)

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

Output: false (stuck at index 3 with jump 0)

Code

Java
Python
JavaScript
public class Solution {
    public boolean canJump(int[] nums) {
        int maxReach = 0;
        for (int i = 0; i < nums.length; i++) {
            if (i > maxReach) return false;
            maxReach = Math.max(maxReach, i + nums[i]);
            if (maxReach >= nums.length - 1) return true;
        }
        return true;
    }
}
            
def can_jump(nums):
    max_reach = 0
    for i in range(len(nums)):
        if i > max_reach:
            return False
        max_reach = max(max_reach, i + nums[i])
        if max_reach >= len(nums) - 1:
            return True
    return True
            
function canJump(nums) {
    let maxReach = 0;
    for (let i = 0; i < nums.length; i++) {
        if (i > maxReach) return false;
        maxReach = Math.max(maxReach, i + nums[i]);
        if (maxReach >= nums.length - 1) return true;
    }
    return true;
}
            

Explanation

  • Greedy Choice: Track the farthest reachable index at each step.
  • Flow: If current index exceeds max reach, fail; otherwise, update max reach.
  • Example: [2,3,1,1,4] → maxReach=2, 4, 4, 4, 4 (reaches end).

Note

Time complexity: O(n), Space complexity: O(1). A simple greedy leap to victory!