代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期|714.买卖股票的最佳时机含手续费|股票问题的总结

一、309.最佳买卖股票时机含冷冻期

思路:首先是整体的思路,第i天拥有股票,或者第i天不拥有股票。由于有冷冻期的原因,我们需要将不拥有股票的状态细分,1.保持卖出股票后的状态 2.冷冻期状态 3.第i天卖出股票的状态。dp的定义就出来了,然后是递归公式,这个只要一种一种情况分析即可。然后是初始化,初始化你可以假设就一天就行。

代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期|714.买卖股票的最佳时机含手续费|股票问题的总结_第1张图片

二、 714.买卖股票的最佳时机含手续费

思想:这题相比上一题就简单多了,因为就两种状态,第i天拥有股票,第i天不拥有股票。然后只是在卖出股票的时候会扣除手续费。大体思路和股票能买卖多次是一样的。

代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期|714.买卖股票的最佳时机含手续费|股票问题的总结_第2张图片

三、股票问题的总结

121. 买卖股票的最佳时机:买卖一次。第i天拥有股票,第i天不拥有股票两种状态

122.买卖股票的最佳时机II:多次买卖。第i天拥有股票,第i天不拥有股票两种状态

123.买卖股票的最佳时机III:最多完成两边交易。第i天第一次拥有股票,第i天第一次不拥有股票,第i天第二次拥有股票,第i天第二次不拥有股票,四种状态。

188.买卖股票的最佳时机IV:最多完成k笔交易。第i天第一次拥有股票,第i天第一次不拥有股票,第i天第k次拥有股票,第i天第k次不拥有股票,2*k种状态。

309.最佳买卖股票时机含冷冻期:多次买卖。第i天拥有股票,第i天不拥有股票又分为第i天卖出,第i天为冷冻期,第i天为保持卖出状态,共四种。

714.买卖股票的最佳时机含手续费:多次买卖,收手续费,第i天拥有股票,第i天不拥有股票两种状态。

总的来说,第一步确定好状态是非常重要的,因为它决定着你推递归公式,决定着你的初始化。如果对于dp的定义都有问题的话,推递归公式的时候你是不能推清楚的。所以我发现股票问题一定要注意dp的定义,凡是定义清楚的话,自己按照思路去确定公式和初始化是非常简单的。

你可能感兴趣的:(动态规划,算法)