跳跃游戏
class Solution {
public:
int jump(vector<int>& nums) {
int size = nums.size();
vector<int > vec(size,0);
for(int i=0;i<size;i++){
int step = nums[i];
if(i!=0 && vec[i] == 0) continue;
for(int j=1;j<=step;j++){
if(i+j<size){
if(vec[i+j] == 0 || vec[i+j] > vec[i]+1)
vec[i+j] = vec[i]+1;
}
else{
break;
}
}
}
return vec[size - 1];
}
};
动态规划要注意,什么时候该点更新(在到达该点步数小于之前记录的步数时,或当前步数为0时);
另外,遍历到不是第一步且到达步数为0(没有点可以到达当前点),应该跳过,因为这一点无法到达;