@rg070836rg
2015-11-27T00:23:53.000000Z
字数 451
阅读 1490
leetcode
贪心
https://leetcode.com/problems/jump-game-ii/
class Solution {
public:
int jump(vector<int>& nums) {
int n=nums.size();
int step=0;//记录步数
int left=0;
int right=0;//记录左右可达范围
if(n==1) return 0;
while(left<=right)
{
step++;
int old_right=right;
//在左右边界中找下一个最大边界
for(int i=left;i<=old_right;i++)
{
int new_right=i+nums[i];//记录当前可到达最大边界
if(new_right>=n-1)
{
//k可到达,返回步数
return step;
}
if(new_right>right)
{
//更新当前可到达最大右边界值
right=new_right;
}
}
//左边界更新到原来的右边界右边
left=old_right+1;
}
}
};