45. Jump Game II
class Solution {
public:
int jump(vector<int>& nums) {
int end = 0;
int furthest = 0;
int cnt = 0;
for(int ii = 0; ii < nums.size()-1; ii++) {
furthest = max(furthest, ii + nums[ii]);
if(ii == end) {
cnt++;
end = furthest;
}
}
return cnt;
}
};
class Solution {
public:
int jump(vector<int>& nums) {
if(nums.size() <= 1) return 0;
int cnt = 0;
int max_step_pos = 0, step = 0;
int last_max_step_pos = 0, now_pos = 0;
while(now_pos < nums.size()) {
step = nums[max_step_pos];
last_max_step_pos = max_step_pos;
max_step_pos = last_max_step_pos+1;
now_pos = last_max_step_pos+1;
while(now_pos < nums.size() && now_pos - last_max_step_pos <= step) {
if(now_pos + nums[now_pos] >= max_step_pos + nums[max_step_pos]) max_step_pos = now_pos;
now_pos++;
}
cnt++;
}
return cnt;
}
};