← Arrays

Jump Game

Medium
Python
def can_jump(nums):
    reach=0
    for i,n in enumerate(nums):
        if i>reach: return False
        reach=max(reach,i+n)
    return True
Java
public boolean canJump(int[] nums){
    int reach=0;
    for(int i=0;i<nums.length;i++){
        if(i>reach) return false;
        reach=Math.max(reach,i+nums[i]);
    } return true;
}

Key Insight

Greedy. enumerate vs index.

Python → Java Differences

  • enumerate vs manual index
  • True/False vs true/false
  • Greedy identical
Python
def can_jump(nums):
    reach=0
    for i,n in enumerate(nums):
        if i>reach: return False
        reach=max(reach,i+n)
    return True
Java
public boolean canJump(int[] nums){
    int reach=0;
    for(int i=0;i<nums.length;i++){
        if(i>reach) return false;
        reach=Math.max(reach,i+nums[i]);
    } return true;
}

Algorithm Steps

1. Track max reachable
2. If current > reach: false