码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-01 17:50:59      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:c++   程序员   面试   动态规划   贪心算法   

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


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

标签:c++   程序员   面试   动态规划   贪心算法   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!