一、题目
二、思路
思想就一句话:每次在上次能跳到的范围(end)内选择一个能跳的最远的位置(也就是能跳到max_far位置的点)作为下次的起跳点 !
三、代码
class Solution {
public:
int jump(vector<int>& nums) {
int size=nums.size();
int step=0;
int end=0;// 上次跳跃可达范围右边界(下次的最右起跳点)
int max_far=0;// 目前能跳到的最远位置
//思想就一句话:每次在上次能跳到的范围(end)内选择一个能跳的最远的位置(也就是能跳到max_far位置的点)作为下次的起跳点 !
for(int i=0;i<size-1;++i){
max_far=max(max_far,nums[i]+i);
if(i==end){
end=max_far;
step++;
}
}
return step;
}
};