123. 买卖股票的最佳时机 III
一、题目
给定一个数组,它的第 i
个元素是一支给定的股票在第 i
天的价格。
设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
二、思路
三、代码
class Solution { public: int maxProfit(vector<int>& prices) { int n = prices.size(); int buy1 = -prices[0], sell1 = 0; int buy2 = -prices[0], sell2 = 0; for (int i = 1; i < n; ++i) { buy1 = max(buy1, -prices[i]); sell1 = max(sell1, buy1 + prices[i]); buy2 = max(buy2, sell1 - prices[i]); sell2 = max(sell2, buy2 + prices[i]); } return sell2; } };
四、分析
复杂度分析
时间复杂度:O(n),其中 n 是数组 prices 的长度。
空间复杂度:O(1)。