Similar Problems
Similar Problems not available
Jump Game - Leetcode Solution
LeetCode: Jump Game Leetcode Solution
Difficulty: Medium
Topics: greedy dynamic-programming array
Problem Statement:
You are given an array of non-negative integers nums
, where each element represents your maximum jump distance at that position. Your goal is to reach the last index in the minimum number of jumps.
You can assume that you can always reach the last index.
Example:
Input: nums = [2,3,1,1,4] Output: 2 Explanation: The minimum number of jumps to reach the last index is 2. Jump 1 step from index 0 to 1, then 3 steps to the last index.
Solution:
The problem is to find the minimum number of jumps required to reach the last index. We can solve this problem using the greedy approach
- Initialize the variables: currEnd=0, currFarthest=0, and the number of jumps=0
- Iterate through the array from the first element to the last element
- For each element in the array: a. Update the currFarthest to max(currFarthest, nums[i]+i) b. If i == currEnd, update currEnd=currFarthest and increment the number of jumps by 1
- Return the number of jumps.
Dry Run:
Let’s dry run the above approach with the given example
nums = [2,3,1,1,4]
currEnd = currFarthest = jumps = 0
Iteration 1: nums[0]=2 currFarthest = max(0+2,0) = 2 Iteration 2: nums[1]=3 currFarthest = max(2+3,2) = 5 Iteration 3: nums[2]=1 currFarthest = max(5+1,3) = 6 Iteration 4: nums[3]=1 currFarthest = max(6+1,4) = 7 currEnd = 3, jumps=1 Iteration 5: nums[4]=4 currFarthest = max(7+4,5) = 11 currEnd = 7, jumps=2
Final value of jumps = 2
Time complexity: O(n)
Code:
def jump(nums): currEnd = currFarthest = jumps = 0 for i in range(len(nums)-1): currFarthest = max(currFarthest, i + nums[i]) if i == currEnd: jumps += 1 currEnd = currFarthest return jumps
Jump Game Solution Code
1