Best Time to Buy and Sell Stock III LeetCode solution in C++
1class Solution {2public:3int maxProfit(vector<int> &prices) {4int n = prices.size();5vector<int> left(n);6vector<int> right(n);7int mini = INT_MAX;8int ans1 = 0;9for (int i = 0; i < n; i++) {10mini = min(mini, prices[i]);11ans1 = max(ans1, prices[i] - mini);12left[i] = ans1;13}14int maxi = INT_MIN;15int ans2 = 0;16for (int i = n - 1; i >= 0; i--) {17maxi = max(maxi, prices[i]);18ans2 = max(ans2, maxi - prices[i]);19right[i] = ans2;20}21int ans3 = 0;22for (int i = 0; i < n; i++) {23ans3 = max(ans3, left[i] + right[i]);24}25return ans3;26}27};