45. 跳跃游戏 II
以最小的步数增加最大的覆盖范围,直到覆盖范围覆盖了终点
在cover范围内进行遍历,每次遍历完当前覆盖范围后步数加一
当下一步覆盖范围到达终点说明能走完,退出循环
class Solution {
public:
int jump(vector<int>& nums) {
if(nums.size()==1)return 0;
int cover = 0; //当前元素能覆盖的最远距离
int result = 0;
int nextcover = 0;//下一元素能覆盖的最远距离
for(int i=0;i<=cover;i++)
{
//在一个cover内记录下一个最远覆盖距离
nextcover = max(nextcover,i+nums[i]);
//当遍历完当前cover后,进行处理
if(i==cover)
{
//
if(cover!=nums.size()-1)
{
result++;
cover = nextcover;
if(cover>=nums.size()-1)break;
}
else break;
}
}
return result;
}
};