[2, 3, 1, 1, 4, 2, 1]为例
第一次:
2可以跳到[3, 1],最远下标为2,那么第二次起跳肯定在这两个数内;
[3, 1]都可以作为第二次起跳点,所以可以跳到[1, 4],最远下标为4,那么第三次起跳肯定在[1, 4]这两个数内;
[1,4]都可以作为第三次起跳点,所以可以调到[2, 1],最远下标为6,已经到终点了;
时间复杂度:
空间复杂度:
class Solution {
public:
int Jump(int n, vector<int>& A) {
// write code here
int ans = 0;
int maxDst = 0; //当前最大到达位置
int preJump = 0; //上次最大到达位置
for(int i = 0; i < n - 1; i ++){
maxDst = max(maxDst, i + A[i]);
if(i == preJump){
preJump = maxDst;
ans ++;
}
}
return ans;
}
}; 
京公网安备 11010502036488号