714. 买卖股票的最佳时机含手续费
分析
-
状态定义
- 定义
f[i][0]
:表示第i
天结束时,手中没有持有股票的最大利润 - 定义
f[i][1]
:表示第i
天结束时,手中持有股票的最大利润
- 定义
-
状态转移
- 在第
i
天,可以有以下两种状态转移: - 手中没有股票:
- 可能来自前一天也没有股票,即
f[i-1][0]
- 或者今天卖出股票,产生利润
f[i-1][1] + prices[i-1] - fee
(卖出价格减去手续费)。 - 转移公式:
f[i][0] = max(f[i-1][0], f[i-1][1] + prices[i-1] - fee)
- 可能来自前一天也没有股票,即
- 手中持有股票:
- 可能来自前一天也持有股票,即
f[i-1][1]
- 或者今天买入股票,产生利润
f[i-1][0] - prices[i-1]
- 转移公式:
f[i][1] = max(f[i-1][1], f[i-1][0] - prices[i-1])
- 可能来自前一天也持有股票,即
- 在第
-
初始状态
- 第
0
天没有股票:f[0][0] = 0
(没有任何利润)
- 第
-
结果
- 最后一天手中没有股票的最大利润
f[n][0]
- 最后一天手中没有股票的最大利润
时间复杂度
时间复杂度 O(n)
空间复杂度
空间复杂度为 O(n)
C++代码
|
|