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; } };