给出一个非负整数数组,你最初定位在数组的第一个位置。
数组中的每个元素代表你在那个位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
样例
样例 1
输入 : [2,3,1,1,4]
输出 : 2
解释 : 到达最后位置的最小跳跃次数是2(从下标0到1跳跃1个距离长度,然后跳跃3个距离长度到最后位置)
题解:位于初始位置时为0步,之后的每一步都由前面的步数来达到,就是前面的步数+1步,找到每一位置可以到达的最少步数,一直到最终位置即可
class Solution {
public:
/**
* @param A: A list of integers
* @return: An integer
*/
int jump(vector<int> &A) {
// write your code here
vector<int> judge(A.size(),1000);
judge[0]=0;
for (int i = 0; i < A.size(); i++) {
/* code */
for(int j=1;j<=A[i];j++)
{
if(i+j<A.size())
judge[i+j]=judge[i+j]<judge[i]+1?judge[i+j]:judge[i]+1;
}
}
return judge[A.size()-1];
}
};