您的位置:首页 > 其它

45. Jump Game II

2016-06-07 10:04 197 查看
枚举出所有到达终点的情况 最终超时了

class Solution {
private:
int minstep=INT_MAX;
void dfs(vector<int>&nums,int index,int cstep)
{
if(index<nums.size()-1)//没有到达终点则枚举出下一步所有可能的步长
{
for(int i=1;i<=nums[index];i++)
{
dfs(nums,index+i,cstep+1);
}
}else if(index==nums.size()-1)//到了终点 则更新最小的步数
{
minstep=min(minstep,cstep);
}
}
public:
int jump(vector<int>& nums) {
dfs(nums,0,0);
return minstep;
}
};


最终的解法

class Solution {
public:
int jump(vector<int>& nums) {
int level=-1;
int currentmax=0;
int nextmax=0;
int i=0;
int n=nums.size();
while(i<=currentmax&&i<n)
{
level++;
nextmax=currentmax;
for(;i<=currentmax&&i<n;i++)
{
nextmax=max(nextmax,nums[i]+i);
if(i>=n-1)
return level;
}
currentmax=nextmax;
}
return 0;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: