购物类网站模板,wordpress数据库修改后台密码,杭州seo代理公司,wordpress dx提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、买卖股票的最佳时机4二、买卖股票的最佳时机含冷冻期三、买卖股票含手续费 前言
提示#xff1a;这里可以添加本文要记录的大概内容#xff1a;
今天是… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、买卖股票的最佳时机4二、买卖股票的最佳时机含冷冻期三、买卖股票含手续费 前言
提示这里可以添加本文要记录的大概内容
今天是跟着代码随想录刷题的第48天主要学习了买卖股票的最佳时机4买卖股票冷静期买卖股票含手续费 提示以下是本篇文章正文内容下面案例可供参考
一、买卖股票的最佳时机4
思路这道题和买卖股票3很像主要就是找规律可以买卖k次用循环来赋值就好了
class Solution {
public:int maxProfit(int k, vectorint prices) {vectorvectorint dp(prices.size(),vectorint(2*k));for(int j0;j2*k;j){if(j%20) dp[0][j]-prices[0];else dp[0][j]0;}for(int i1;iprices.size();i){for(int j0;j2*k;j){if(j0){dp[i][0]max(dp[i-1][0],-prices[i]);//今天不持股保持了昨天也不持或者昨天持股今天卖了}if(j!0j%20){dp[i][j]max(dp[i-1][j],dp[i-1][j-1]-prices[i]);}if(j%21){dp[i][j]max(dp[i-1][j],dp[i-1][j-1]prices[i]);}}}int max1INT_MIN;for(int j0;j2*k;j){max1max(dp[prices.size()-1][j],max1);}return max1;}
};
二、买卖股票的最佳时机含冷冻期
思路代码里注释的有就是要多细分几种情况
class Solution {
public:int maxProfit(vectorint prices) {vectorvectorint dp(prices.size(),vectorint(4));//dp[i][0]是第i天不持有股但不是刚卖的也不在冷冻期最多有多少钱dp[i][1]是第i天持有股但是不是当天买最多有多少钱dp[i][2]是第i天在冷冻期最多有多少钱,dp[i][3]是指今天就卖股票最多有多少钱dp[0][0]0;dp[0][1]-prices[0];dp[0][2]0;//考虑第0天买了又卖就是冷冻期dp[0][3]0;for(int i1;iprices.size();i){dp[i][0]max(dp[i-1][0],dp[i-1][2]);//今天不持股不是刚卖的且不在冷冻期保持了昨天不在冷冻期或者昨天在冷冻期dp[i][1]max(max(dp[i-1][1],dp[i][0]-prices[i]),dp[i][2]-prices[i]);//今天持股保持的昨天持股或者今天刚买的但是在非冷冻期才买的dp[i][2]dp[i-1][3];//今天是冷冻期说明昨天刚卖dp[i][3]dp[i-1][1]prices[i];//今天卖股票昨天一定持有股票}return max(max(max(dp[prices.size()-1][0],dp[prices.size()-1][1]),dp[prices.size()-1][2]),dp[prices.size()-1][3]);}
};
三、买卖股票含手续费
思路和买卖股票2的代码基本上一样就是要减去手续费就行了很简单
class Solution {
public:int maxProfit(vectorint prices, int fee) {vectorvectorint dp(prices.size(),vectorint(2));//dp[i][0]是第i天不持有股最多有多少钱dp[i][1]是第i天持有股最多有多少钱dp[0][0]0;dp[0][1]-prices[0];for(int i1;iprices.size();i){dp[i][0]max(dp[i-1][0],dp[i-1][1]prices[i]-fee);//今天不持股保持了昨天也不持或者昨天持股今天卖了dp[i][1]max(dp[i-1][1],dp[i-1][0]-prices[i]);//今天持股保持的昨天持股或者今天刚买的但是这种情况是昨天不持股的价格减去今天购买的价格}return max(dp[prices.size()-1][0],dp[prices.size()-1][1]);}
};