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 (i.e., you must sell the stock before you buy again).
Example 1:
Input: [3,3,5,0,0,3,1,4]
Output: 6
Explanation: Buy on day 4 (price = 0) and sell on day 6 (price = 3), profit = 3-0 = 3.
Then buy on day 7 (price = 1) and sell on day 8 (price = 4), profit = 4-1 = 3.
Example 2:
Input: [1,2,3,4,5]
Output: 4
Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4.
Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are
engaging multiple transactions at the same time. You must sell before buying again.
Example 3:
Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.
Time o(n^ 2)
class Solution {
public int maxProfit(int[] prices) {
int res = 0;
int left = 0;
int right = 0;
for(int i = 0; i < prices.length; i++){
left = stock1(prices, 0, i);
right = stock1(prices, i + 1, prices.length - 1);
res = Math.max(left + right, res);
}
return res;
}
private int stock1(int[] prices, int start, int end){
int res = 0;
int min = Integer.MAX_VALUE;
for(int i = start; i <= end; i++){
min = Math.min(min, prices[i]);
res = Math.max(res, prices[i] - min);
}
return res;
}
}
Solution
Time o(n) ?
123. Best Time to Buy and Sell Stock III
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Python内置模块-Time
time模块包含了一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具。
python time python内置模块