Leetcode 309. 买卖股票的最佳时机含冷冻期
题目:309. 买卖股票的最佳时机含冷冻期
解析:代码随想录解析
解题思路
分为四种情况:持有(购买);保持卖出;今天卖出;冷冻期
代码
class Solution {
public int maxProfit(int[] prices) {
//持有股票;保持卖出股票;卖出股票;冷冻期
int n = prices.length;
int [][]dp = new int[n][4];
dp[0][0] = -prices[0];//持股
//dp[0][1] 保持卖出
//dp[0][2] 今天卖出
//dp[0][3] 冷冻期
for (int i = 1; i < n; i++) {
dp[i][0] = Math.max(dp[i-1][0], Math.max(dp[i-1][1], dp[i-1][3]) - prices[i]);//除了今天卖出其他的最大值
dp[i][1] = Math.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];//和昨天卖出保持一致
}
return Math.max(dp[n-1][1], Math.max(dp[n-1][2], dp[n-1][3]));
}
}
总结
暂无
Leetcode 714. 买卖股票的最佳时机含手续费
题目:714. 买卖股票的最佳时机含手续费
解析:代码随想录解析
解题思路
比2多一个手续费,其他一致
代码
class Solution {
public int maxProfit(int[] prices, int fee) {
int n = prices.length;
int [][]dp = new int[n][2];
dp[0][0] = -prices[0];
for (int i = 1; i < n; i++) {
dp[i][0] = Math.max(dp[i-1][0], dp[i-1][1] -prices[i]);
dp[i][1] = Math.max(dp[i-1][1], dp[i][0] + prices[i] - fee);
}
return dp[n-1][1];
}
}
总结
暂无