题目描述
思路分析
线性dp
d
p
[
i
]
:
dp[i]:
dp[i]:跳到位置i需要的最小次数
d
p
[
i
]
=
m
i
n
(
d
p
[
i
]
+
1
)
满
足
n
u
m
s
[
j
]
+
j
>
=
i
dp[i]=min(dp[i]+1) 满足nums[j]+j>=i
dp[i]=min(dp[i]+1)满足nums[j]+j>=i
代码实现
class Solution {
public:
int jump(vector<int>& nums) {
int n=nums.size();
vector<int> dp(n);
for(int i=1;i<n;i++){
for(int j=0;j<=i-1;j++){
if(i-j<=nums[j]){
dp[i]=dp[j]+1;
break;
}
}
}
return dp[n-1];
}
};