题目:
https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/
参考这里
class Solution {
public:
int maxProfit(vector<int>& prices) {
if (prices.size() <= 1)
return 0;
if (prices.size() == 2)
return prices[1] > prices[0] ? prices[1] - prices[0] : 0;
int buy_i = 0, buy_i_1 = max(-prices[0], -prices[1]);//买是必须买
int sell_i_2 = 0, sell_i = 0;
//初始化sell_i_1需注意,若prices[1] - prices[0]<0,则以prices[1]的价格买,当天卖,此时sell_i_1为0
int sell_i_1 = prices[1] - prices[0]<0 ? 0 : prices[1] - prices[0];
for (int i = 2; i < prices.size(); ++i)
{
buy_i = max(buy_i_1, sell_i_2 - prices[i]);
sell_i = max(sell_i_1, buy_i_1 + prices[i]);
buy_i_1 = buy_i;
sell_i_2 = sell_i_1;
sell_i_1 = sell_i;
}
return max(buy_i, sell_i);
}
};