45. Jump Game II
Medium
You are given a 0-indexed array of integers
nums
of length n
. You are initially positioned at nums[0]
.Each element
nums[i]
represents the maximum length of a forward jump from index i
. In other words, if you are at nums[i]
, you can jump to any nums[i + j]
where:0 <= j <= nums[i]
andi + j < n
Return the minimum number of jumps to reach
nums[n - 1]
. The test cases are generated such that you can reach nums[n - 1]
.Example 1:
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.
Example 2:
Input: nums = [2,3,0,1,4]
Output:
2
Constraints:
1 <= nums.length <= 104
0 <= nums[i] <= 1000
func jump(nums []int) int {
dp := make([]int, len(nums))
dp[len(nums) - 1] = 0
for i := len(nums) - 2; i >= 0; i-- {
res := len(nums)
for j := 1; j <= nums[i]; j++ {
curIdx := i+j
if curIdx < len(nums) && 1 + dp[curIdx] < res{
res = 1+dp[curIdx]
}
}
dp[i] = res
}
return dp[0]
}
Last modified 6mo ago