Best Time to Buy and Sell Stock III
DP
int maxProfit(vector<int> &prices) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(prices.empty())
return 0;
vector<int> profit1(prices.size(),0);
vector<int> profit2(prices.size(),0);
int minPrice = prices[0];
for(int i=1;i<prices.size();i++)
{
minPrice = min(minPrice,prices[i]);
profit1[i] = max(profit1[i-1],prices[i]-minPrice);
}
int maxPrice = prices[prices.size()-1];
for(int i=prices.size()-2;i>=0;i--)
{
maxPrice = max(maxPrice,prices[i]);
profit2[i] = max(profit2[i+1],maxPrice-prices[i]);
}
int maxProfit = 0;
for(int i=0;i<prices.size();i++)
maxProfit = max(maxProfit,profit1[i]+profit2[i]);
return maxProfit;
}
浙公网安备 33010602011771号