您的位置:首页 > 其它

Best Time to Buy and Sell Stock III

2016-01-15 09:35 423 查看

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).

思路

以为可以借用 只买一次的那个代码,但是怎么也不能得到完全正确的答案,所以还是有问题

看了别人的代码

用两个同样大小的数组,分别记录在当前之前最小的价格,和当前最大的价格

然后思路就是,在当前位置交易,之前的最大值+之后的最大

代码

class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
if(n == 0) return 0;
vector<int> min_p(n), max_p(n);

min_p[0] = prices[0];
for(int i = 1; i < n; i ++) min_p[i] = min(min_p[i-1], prices[i]);

max_p[n-1] = prices[n-1];
for(int i = n - 2; i >= 0; i --) max_p[i] = max(max_p[i+1], prices[i]);

int ret = 0;
int tmp = 0;
for(int i = 0; i < n; i ++){
tmp = max(tmp, prices[i] - min_p[i]);
ret = max(ret, tmp + max_p[i] - prices[i]);
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: