代码随想录算法训练营第51天|● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

● 309.最佳买卖股票时机含冷冻期

class Solution {
public:
    int maxProfit(vector& prices) {
        if (prices.size() == 1) return 0;
        vector dp(4, 0);
        dp[0] = 0;//未持有股票,非冷冻期最大金额
        dp[1] = -prices[0];//持有股票
        dp[2] = 0;//卖出股票当天
        dp[3] = 0;//未持有股票,冷冻期
        for (int i = 1; i < prices.size(); i++) {
            int tmp0 = dp[0];
            int tmp1 = dp[1];
            int tmp2 = dp[2];
            dp[0] = max(dp[0], dp[3]);
            dp[1] = max(dp[1], max(tmp0, dp[3]) - prices[i]);
            dp[2] = tmp1 + prices[i];
            dp[3] = tmp2;
        }
        return max(dp[0], max(dp[2], dp[3]));
    }
};

● 714.买卖股票的最佳时机含手续费

class Solution {
public:
    int maxProfit(vector& prices, int fee) {
        vector dp(2, 0);
        dp[0] = 0;//未持有股票最大金额
        dp[1] = -prices[0];//持有股票最大金额
        for (int i = 1; i < prices.size(); i++) {
            int tmp = dp[0];
            dp[0] = max(dp[0], dp[1] + prices[i] - fee);
            dp[1] = max(dp[1], tmp - prices[i]);
        }
        return dp[0];
    }
};

你可能感兴趣的:(代码随想录算法训练营,c++,数据结构,leetcode,算法)