您的位置:首页 > 其它

Leetcode---Best Time to Buy and Sell Stock III

2018-03-14 22:26 513 查看
Say you have an array for which the i th 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).
public class Solution {
public int maxProfit(int[] prices) {
if(prices.length < 2 || prices == null) return 0;

int[] left = new int[prices.length];
int[] right = new int[prices.length];

int profit = 0;

left[0] = 0;
int minleft = prices[0];
for(int i = 1; i < prices.length; i++)
{
minleft = Math.min(minleft, prices[i]);
left[i] = Math.max(left[i-1], prices[i]-minleft);
}

right[prices.length-1] = 0;
int maxright = prices[prices.length-1];
for(int j = prices.length-2; j > 0; j--)
{
maxright = Math.max(maxright, prices[j]);
right[j] = Math.max(right[j+1], maxright-prices[j]);
}

for(int k = 0; k < prices.length; k++)
{
profit = Math.max(profit, left[k]+right[k]);
}
return profit;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Leetcode