class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
vector<int> f(n + 1);
for (int i = 1, minp = INT_MAX; i <= n; i ++ ) {
//第i天 不卖出 卖出
f[i] = max(f[i - 1], prices[i - 1] - minp);
minp = min(minp, prices[i - 1]);
}
int res = 0;
for (int i = n, maxp = 0; i >= 1; i -- ) {
res = max(res, maxp - prices[i - 1] + f[i - 1]);
maxp = max(maxp, prices[i - 1]);
}
return res;
}
};