题目:leetcode
Jump Game II
Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Your goal is to reach the last index in the minimum number of jumps.
For example:
Given array A = [2,3,1,1,4]
The minimum number of jumps to reach the last index is 2
. (Jump 1
step from index 0 to 1, then 3
steps to the last index.)
分析:
应该考虑无法到达终点的情况,网上有一些答案没有考虑这个。
思路1:贪婪算法,时间复杂度O(n),空间复杂度O(1)
int jump(int A[], int n) {
int ret = 0;
int curMax = 0;
int curRch = 0;
for (int i = 0; i < n; i++)
{
if (curRch < i)
{
ret++;
curRch = curMax;
if (curRch < i)
return -1;//返回-1表示无法到达终点
}
curMax = max(curMax, A[i] + i);
}
return ret;
}