题目描述
给出一个非负整数数组,你最初定位在第一个数组的索引。数组中的每个元素代表您在该位置的最大跳跃长度。你的目标是在最小的跳跃次数中达到最后一个索引。例如:给定数组A=[2,3,1,1,4],到达最后一个索引的最小跳数是2。(从索引0到1,再到最后一个索引的3步。)
解题思路
设置变量last、cur,last表示每个台阶内最远去的地方,cur表示每一步直接能跨越的最远距离
设置变量step表示步数
代码示例
class Solution {
public:
int jump(int A[], int n) {
int cur = 0;
int last = 0;
int step = 0;
for (int i = 0; i < n && cur >= i; i++) {
if (i > last) {//当i远于当前可达最远的地方时,更新last,同时步数加一
last = cur;
step++;//这个地方不太懂
}
cur = max(cur, A[i] + i);//更新cur
}
return step;
}
};