本文主要是介绍算法训练营day52,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目1:123. 买卖股票的最佳时机 III - 力扣(LeetCode)
class Solution {
public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(), vector<int>(4,0));dp[0][0] = -prices[0];dp[0][1] = 0;dp[0][2] = -prices[0];dp[0][3] = 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][0] + prices[i], dp[i - 1][1]);dp[i][2] = max(dp[i - 1][1] - prices[i], dp[i - 1][2]);dp[i][3] = max(dp[i - 1][3], dp[i - 1][2] + prices[i]);}return dp[prices.size() - 1][3];}
};
题目2:188. 买卖股票的最佳时机 IV - 力扣(LeetCode)
class Solution {
public:int maxProfit(int k, vector<int>& prices) {vector<vector<int>> dp(prices.size(), vector<int>(2 * k, 0));for(int j = 0;j < 2 * k;j+=2) {dp[0][j] = -prices[0];dp[0][j + 1] = 0;}for(int i = 1;i < prices.size();i++) {dp[i][0] = max(dp[i - 1][0], -prices[i]);for(int j = 1;j < 2 * k - 1;j+=2) {dp[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]);}dp[i][2 * k - 1] = max(dp[i - 1][2 * k - 1], dp[i - 1][2 *k - 2] + prices[i]);}return dp[prices.size() - 1][2 * k - 1];}
};
这篇关于算法训练营day52的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!