【贪婪算法、动态规划】Jump Game II

时间:2015-04-01 17:49:54   收藏:0   阅读:269

题目: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;
}


原文:http://blog.csdn.net/bupt8846/article/details/44807763

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!