首页 > 其他 > 详细

Leetcode Best Time to Buy and Sell Stock III

时间:2014-01-27 19:37:23      阅读:454      评论:0      收藏:0      [点我收藏+]

Best Time to Buy and Sell Stock III

 

Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete at most two transactions.

Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

要掌握这种思想:

1 两段分段思想
2 前往后,后往前都可以处理数列的思想

时间复杂度是O(n),不掌握这种思想是很难做出来的。

class Solution {
public:
    int maxProfit(vector<int> &prices) 
	{
		vector<int> profit(prices.size()+1);

		int buy = INT_MAX;
		for (int i = 0; i < prices.size(); i++)
		{
			if (prices[i] < buy) buy = prices[i];
			else profit[i+1] = max(profit[i], prices[i]-buy);
		}

		int sale = INT_MIN , max_profit = 0, res = 0;
		for (int i = prices.size() - 1; i >= 0 ; i--)
		{
			if (prices[i] > sale) sale = prices[i];
			else max_profit = max(max_profit, sale - prices[i]);
			profit[i+1] = profit[i+1]+ max_profit;
			res = max(profit[i+1], res);
		}
		return res;
	}
};


Leetcode Best Time to Buy and Sell Stock III

原文:http://blog.csdn.net/kenden23/article/details/18156191

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!