309.最佳买卖股票时机含冷冻期
给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。
思路:
dp数组:状态一:持有股票状态。状态二:不持有股票的状态。状态三:冷冻期。照抄前一天的不持有股票的状态。如果前一天刚卖出,那进入冷静期是合理的。如果前一天并没有卖出,而是延续前前天的卖出状态。那今天即可买入。因为昨天的冷静期体现的就是前前天的卖出。
递推公式:见代码
遍历顺序:物品(股票日价格)外层,背包(三种状态)内层。无法压缩成一维数组,那就二维数组,正序遍历。
714.买卖股票的最佳时机含手续费
给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。
思路:就是多次购买的思路,只不过每次卖出的时候要减去手续费。
二维数组:
以下是卡哥资料
309.最佳买卖股票时机含冷冻期
本题加了一个冷冻期,状态就多了,有点难度,大家要把各个状态分清,思路才能清晰
视频讲解:https://www.bilibili.com/video/BV1rP4y1D7ku
714.买卖股票的最佳时机含手续费
相对122.买卖股票的最佳时机II ,本题只需要在计算卖出操作的时候减去手续费就可以了,代码几乎是一样的,可以尝试自己做一做。
视频讲解:https://www.bilibili.com/video/BV1z44y1Z7UR
股票总结
股票问题做一个总结吧