您的位置:首页 > 其它

Best Time to Buy and Sell Stock III

2013-06-05 10:54 429 查看
题目:

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

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

代码如下:

int maxProfit(vector<int> &prices) {

int n=prices.size();

if(n<=1)return 0;

vector<int> left(n,0);

vector<int> right(n,0);

int minl=prices[0];

for(int i=1;i<n;i++)

{

minl=std::min(minl,prices[i]);

left[i]=std::max(left[i-1],prices[i]-minl);

}

int maxr=prices[n-1];

for(int i=n-2;i>=0;i--)

{

maxr=std::max(maxr,prices[i]);

right[i]=std::max(right[i+1],maxr-prices[i]);

}

int sum=0;

for (int i=0;i<n;i++)

sum=std::max(sum,left[i]+right[i]);

return sum;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: