2023.8.22
本题和买卖股票的最佳时机II 几乎一样,就是增加了一个手续费,需要在卖出股票的时候减去手续费fee即可。 代码如下:
class Solution {
public:
int maxProfit(vector<int>& prices, int fee) {
vector<vector<int>> dp(prices.size(),vector<int>(2));
dp[0][0] = -prices[0];
dp[0][1] = 0;
for(int i=1; i<prices.size(); i++)
{
dp[i][0] = max(dp[i-1][0] , dp[i-1][1]-prices[i]);
dp[i][1] = max(dp[i-1][1] , dp[i-1][0]+prices[i]-fee);
}
return dp[prices.size()-1][1];
}
};
至此已经做了六道股票相关的题目了,现做一个总结:
买卖股票的最佳时机 :股票只能买卖一次。
买卖股票的最佳时机II : 股票可以买卖多次。
买卖股票的最佳时机III :股票最多买卖两次。
买卖股票的最佳时机IV : 股票最多买卖K次。
买卖股票的最佳时机含冷冻期 :股票可以买卖多次,但卖出股票后有一天的冷冻期。
买卖股票的最佳时机含手续费(本题):股票可以买卖多次,但每买卖一次需要扣除手续费。