动态规划算法8
LeetCode 123 买卖股票的最佳时机-iii 2023.12.13
- 题目链接
- 代码随想录讲解[链接]
int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(), vector<int>(4, 0));dp[0][0] = -prices[0];dp[0][2] = -prices[0];for (int i = 1; i < prices.size(); i++){dp[i][0] = max(dp[i-1][0], -prices[i]);dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i]);dp[i][2] = max(dp[i-1][2], dp[i-1][1]-prices[i]);dp[i][3] = max(dp[i-1][3], dp[i-1][2]+prices[i]);}return dp[prices.size()-1][3];
}
LeetCode 188 买卖股票的最佳时机-iv 2023.12.13
- 题目链接
- 代码随想录讲解[链接]
int maxProfit(int k, vector<int>& prices) {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 += 2){if(j == 0)dp[i][j] = max(dp[i-1][j], -prices[i]);elsedp[i][j] = max(dp[i-1][j], dp[i-1][j-1]-prices[i]);dp[i][j+1] = max(dp[i-1][j+1], dp[i-1][j]+prices[i]);}}return dp[prices.size()-1][2*k-1];
}