1.8 KiB
1.8 KiB
股票问题
122. 买卖股票的最佳时机 II
dp[i][0]
表示第 i 天持有股票情况下的资产总额,dp[i][1]
表示第 i 天没有持有股票情况下的资产总额。这里的资产不包括股票本身的价值,只包括自身的现金,如果你在第 1 天买入了股票,那么你的资产总额是-prices[0]
。- 递推公式:
- 我们先来讨论
dp[i][0]
,也就是第 i 天持有股票时的资产,分两种情况- 第 i - 1 天持有股票,那么第 i 天的资产就是
dp[i - 1][0]
- 第 i - 1 天没持有股票,那么第 i 天的资产就是
dp[i - 1][1] - prices[i]
- 取这两者的最大值即为第 i 天的最大资产
dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i])
- 第 i - 1 天持有股票,那么第 i 天的资产就是
- 同理
dp[i][1]
也分两种情况- 第 i - 1 天持有股票,那么第 i 天的资产就是
dp[i - 1][0] + prices[0]
- 第 i - 1 天没持有股票,那么第 i 天的资产就是
dp[i - 1][1]
- 取这两者的最大值即为第 i 天的最大资产
dp[i][1] = max(dp[i - 1][0] + prices[i], dp[i - 1][1])
- 第 i - 1 天持有股票,那么第 i 天的资产就是
- 我们先来讨论
- 初始化
dp[0][0] = -prices[0]
dp[0][1] = 0
- 遍历顺序:从前往后
123.买卖股票的最佳时机III
dp[i][j][k]
是第i
笔交易中,第j
天,是否持有股票时的总资产- 递推公式:
dp[0][i][0] = max(dp[0][i - 1][0], -prices[i])
dp[0][i][1] = max(dp[0][i - 1][1], dp[0][i][0] + prices[i])
dp[1][i][0] = max(dp[1][i - 1][0], dp[0][i - 1][1] - prices[i])
dp[1][i][1] = max(dp[1][i - 1][1], dp[0][i - 1][0] + prices[i])
- 初始化:
dp[i][0][0] = -prices[0]
dp[i][0][1] = 0
- 遍历顺序:
- 先遍历
i
- 再遍历
j
和k
- 先遍历