用贪心算法,竟然对了,反正每次都走最远的位置就好了。
class Solution {
public:
// 最直观的想法,就是统计所有到last的路径中,寻找路径最短的。
// 也就是统计所有结点到last的最短路径。
int dfs(vector<int>& nums, int pos){
if (nums[pos]+pos>=nums.size()-1){
return 1;
}
int maxnum = 0;
int nextpos = 0;
for(int j=pos+1;j<=pos+nums[pos];j++){
if (j-pos+nums[j]>maxnum){
maxnum = j-pos+nums[j];
nextpos = j;
}
}
return dfs(nums, nextpos)+1;
}
int jump(vector<int>& nums) {
if (nums.size()==1){return 0;}
return dfs(nums, 0);
}
};