这道题在跳跃游戏(力扣55)-CSDN博客 的基础上需要找到最小的跳跃次数。那么我们需要用一个变量来统计跳跃次数,而难点就在于何时让该变量的值增加。这一点我写在注释中,大家结合我的代码会更好理解。其他部分跟跳跃游戏(力扣55)-CSDN博客 几乎相同,我就不再次赘述了。
代码及详细注释如下:
class Solution {
public:
int jump(vector<int>& nums) {
if(nums.size() == 1) return 0;
int next_cover = 0;
int cur_cover = 0;
int result = 0;
for(int i = 0;i <= cur_cover;i++){
next_cover = max(next_cover,i + nums[i]);
//当遍历的数组的指针达到当前的最大跳跃范围时,就让跳跃次数增加
if(i == cur_cover){
result++;
cur_cover = next_cover;
}
//如果最大范围大于数组最后一个下标,可以直接退出
if(cur_cover >= nums.size() - 1) return result;
}
return 0;
}
};