leetcode-309-最佳买卖股票时机含冷冻期

leetcode-309-最佳买卖股票时机含冷冻期

class Solution {

public:

    int maxProfit(vector<int>& prices) {

        if (prices.size() < 2) return 0;

        vector<vector<int>> dp_hasnt(prices.size(), vector<int>(2)) ;

        vector<int> dp_has(prices.size());

        dp_hasnt[0][0] = 0;

        dp_hasnt[0][1] = INT_MIN; //不可能的情况

        dp_has[0] = -prices[0];

        for (int i=1; i<prices.size(); i++){

            dp_hasnt[i][0] = max(dp_hasnt[i-1][0], dp_hasnt[i-1][1]);//持续没有,冷静期取消

            dp_hasnt[i][1] = dp_has[i-1]+prices[i]; //买入,成为冷静期

            dp_has[i] = max(dp_has[i-1], dp_hasnt[i-1][0] - prices[i]);

        }

        return max(dp_hasnt.back()[0], dp_hasnt.back()[1]);

    }

};