45. 跳跃游戏 II(LeetCode中等)(DP)

class Solution {
public:
int jump(vector<int>& nums) {
int n = nums.size();
vector<int> f(n, 0);
//f[i]表示从起点跳到i的最小步数
//找到每段距离的最大右边界
for(int i = 1, j = 0; i < n; ++i){
while(j + nums[j] < i) ++j;
f[i] = f[j] + 1;
}
return f[n-1];
}
};

浙公网安备 33010602011771号