题意
在位置i时,能向前走0~nums[i]步,问最少多少次能走到最右。
题解
maxpos表示step次能走到的最远位置,然后pos为当前位置,用pos~maxpos之间的值更新maxpos,然后step++。
代码
class Solution {
public:
int jump(vector<int>& nums) {
int pos = 0;
int maxpos = 0;
int step = 0;
while (pos < nums.size() - 1) {
if (maxpos >= nums.size() - 1) break;
int temp = maxpos;
while (pos <= temp && pos < nums.size() - 1) {
maxpos = max(maxpos, pos + nums[pos]);
pos++;
}
step++;
}
return step;
}
};