This commit is contained in:
@@ -57,6 +57,7 @@
|
||||
- [基础问题](./dynamic-programming-basic.md)
|
||||
- [背包问题](./knapsack.md)
|
||||
- [打家劫舍](./house-robber.md)
|
||||
- [股票问题](./stock.md)
|
||||
|
||||
# STL
|
||||
|
||||
|
18
notes/src/stock.md
Normal file
18
notes/src/stock.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# 股票问题
|
||||
|
||||
## [122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-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])`
|
||||
- 同理 `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])`
|
||||
- 初始化
|
||||
- `dp[0][0] = -prices[0]`
|
||||
- `dp[0][1] = 0`
|
||||
- 遍历顺序:从前往后
|
Reference in New Issue
Block a user