思路:不能想着每一步怎么走,该选择跳几步。要用宏观的思路去想。只管最后能不能覆盖到终点。中间的细节再做思考。
class Solution {
public:
int jump(vector<int>& nums) {
int result =0,n=nums.size()-1,cover=0,next=0;
if(nums.size()==1) return 0;
for(int i=0;i<=cover;++i){
next=max(next,nums[i]+i);
if(i==cover){
if(cover<n){
++result;
cover=next;
if(cover>=n) break;
}
else{
break;
}
}
}
return result;
}
};