class Solution { public: int maxProfit(vector<int> &prices) { // Start typing your C/C++ solution below // DO NOT write int main() function int len=prices.size(); if(len<2)return 0; int vally=prices[0],peak=prices[len-1],maxprofit=0,i,j; vector<int> before,after; before.assign(len,0); after.assign(len,0); for(i=0;i<len;++i){ vally=min(prices[i],vally); if(i>0){ before[i]=max(before[i-1],prices[i]-vally); } } for(i=len-1;i>=0;--i){ peak=max(prices[i],peak); if(i<len-1){ after[i]=max(after[i+1],peak-prices[i]); } maxprofit=max(maxprofit,after[i]+before[i]); } return maxprofit; } };