55. Jump Game
Intuition
We can use the back-tracking approach , with memorisation to avoid duplicate effort
Approach
When at $i$ try taking all possible jumps and return if any one works.
Complexity
Time complexity : $\text{O}()$
Space complexity : $\text{O}()$
Code
class Solution {
    Set < Integer > failing = new HashSet < > ();
    public boolean jumping(int[] nums, int i) {
        if (i >= nums.length - 1)
            return true;
        if (nums[i] == 0)
            return false;
		for (int j = Math.min(nums[i],nums.length - i) ; j > 0; --j) {
            if (failing.contains(i + j))
                continue;
            if (jumping(nums, i + j))
                return true;
            failing.add(i + j);
        }
        return false;
    }
    public boolean canJump(int[] nums) {
        return jumping(nums, 0);
    }
}Last updated