Comment on page

# 45. Jump Game II

Medium
You are given a 0-indexed array of integers `nums` of length `n`. You are initially positioned at `nums`.
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]` and
• `i + 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
}