题目描述:
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
假设你总是可以到达数组的最后一个位置。
解题思路:
有了上一题做铺垫,这一题就很自然而然的地用贪心或者动态规划了。
用dp数组记录跳到每个下标的最少次数
int jump(vector<int>& nums) {
int n = nums.size();
vector<int> dp(n,n-1);
dp[0] = 0;
for(int i=0;i<n;i++){
for(int j=i+1;j-i<=nums[i] && j<n;j++){
dp[j] = min(dp[j], dp[i]+1);
}
}
return dp[n-1];
}