一:论语
己所欲 也要勿施于人 ,每个人的经历和阅历都是不同的 你凭啥说你认为的很开心的事情 去要求别人呢
二:题目
三:上码
class Solution {
public:
int jump(vector<int>& nums) {
/**
思路:1.这里的难点就在于 我们需要判断下一步的的最远跳跃距离,而不能只考虑每次都跳最远的距离
因为比如(2 3 1 2 4) 如果我们一开始就按最远距离跳跃的话,我们就会错过 3 然而3可以一步到位
2.基于此 我们就需要设置一个变量来 不断更新我们的相邻的坐标最远跳跃距。
*/
if(nums.size()==1) return 0;
int nextDistence = 0;//下一个坐标可以移动的最远距离
int curDistence = 0;//当前坐标可以移动的最远距离
int step = 0;
for(int i = 0; i < nums.size(); i++) { //i+nums[i]
nextDistence = max(i+nums[i],nextDistence);//i+nums[i]//这里统计的移动的最远距离是从头开始计算的
if(nextDistence >= nums.size()-1) return step+1;//这里如果加一 是统计我们的最后一步到位
//当到达上一步最远的距离的时候,那么就意味着我们需要进行一次新的起跳距离
if(i == curDistence){
step++;
curDistence = nextDistence;
}
}
return step;
}
};