代码随想录:买卖股票的最佳时机IV

class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        if (prices.empty() || k == 0) return 0;

        vector<vector<int>> dp(prices.size(), vector<int>(2 * k, 0));

        for (int i = 0; i < 2 * k; i += 2) {
            dp[0][i] = -prices[0];
        }

        for (int i = 1; i < prices.size(); i++) {
            for (int j = 0; j < 2 * k; j++) {
                if (j == 0) {
                    dp[i][j] = max(dp[i - 1][j], -prices[i]);
                } else if (j % 2 == 1) {
                    dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1] + prices[i]);
                } else {
                    dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1] - prices[i]);
                }
            }
        }

        return dp[prices.size() - 1][2 * k - 1];
    }
};
posted @ 2025-02-25 20:37  huigugu  阅读(13)  评论(0)    收藏  举报