← Greedy

Jump Game Greedy

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 max-reach. enumerate vs manual index.

Python → Java Differences

  • enumerate vs manual index
  • max() vs Math.max()
  • Greedy reach 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