给你一个非负整数数组  nums ,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

假设你总是可以到达数组的最后一个位置。

链接

1
2
3
4
5
6
7
8
9
10
11
12
13
function jump(nums: number[]): number {
const dp: number[] = Array.from(Array(nums.length), () => {
return nums.length + 1;
});
dp[0] = 0;
for (let i = 0; i < dp.length; i++) {
for (let j = 1; j <= nums[i]; j++) {
if (i + j >= nums.length) return dp[dp.length - 1];
dp[i + j] = Math.min(dp[i + j], 1 + dp[i]);
}
}
return dp[dp.length - 1];
}