代码随想录算法训练营第四十天|188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费。
188.买卖股票的最佳时机IV(最多可以买卖K次)
力扣题目链接
classSolution{public:intmaxProfit(intk,vector<int>&prices){//奇数持有//偶数不持有intlen=prices.size();vector<vector<int>>dp(len,vector<int>(2*k+1));for(intj=1;j<=k;j++){dp[0][2*j-1]=-prices[0];}for(inti=1;i<len;i++){for(intj=1;j<=k;j++){dp[i][2*j-1]=max(dp[i-1][2*j-2]-prices[i],dp[i-1][2*j-1]);dp[i][2*j]=max(dp[i-1][2*j],dp[i-1][2*j-1]+prices[i]);}}returndp[len-1][2*k];}};309.最佳买卖股票时机含冷冻期(明确状态)
力扣题目链接
classSolution{public:intmaxProfit(vector<int>&prices){intlen=prices.size();//持有0//保持卖出股票1//卖出股票2//冷却时3vector<vector<int>>dp(len,vector<int>(4));dp[0][0]=-prices[0];for(inti=1;i<len;i++){dp[i][0]=max(dp[i-1][0],max(dp[i-1][3]-prices[i],dp[i-1][1]-prices[i]));dp[i][1]=max(dp[i-1][1],dp[i-1][3]);dp[i][2]=dp[i-1][0]+prices[i];dp[i][3]=dp[i-1][2];}returnmax(dp[len-1][3],max(dp[len-1][1],dp[len-1][2]));}};714.买卖股票的最佳时机含手续费
力扣题目链接
在122.买卖股票的最佳时机II的基础上加了手续费
classSolution{public:intmaxProfit(vector<int>&prices,intfee){//0持有 1不持有//买入时付费intlen=prices.size();vector<vector<int>>dp(len,vector<int>(2));dp[0][0]=-(prices[0]+fee);dp[0][1]=0;for(inti=1;i<len;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]);}returndp[len-1][1];}};