添加0188.买卖股票的最佳时机IVGo版本空间优化

This commit is contained in:
feobay
2024-08-30 16:19:40 +08:00
parent 0846cd122e
commit f38dc8aedc

View File

@ -404,6 +404,47 @@ func max188(a, b int) int {
}
```
版本三:空间优化版本
```go
func maxProfit(k int, prices []int) int {
n := len(prices)
// k次交易2 * k种状态
// 状态从1开始计算避免判断
// 奇数时持有(保持或买入)
// 偶数时不持有(保持或卖出)
dp := make([][]int, 2)
dp[0] = make([]int, k * 2 + 1)
dp[1] = make([]int, k * 2 + 1)
// 奇数状态时持有i += 2
for i := 1; i <= k * 2; i += 2 {
dp[0][i] = -prices[0]
}
for i := 1; i < len(prices); i++ {
for j := 1; j <= k * 2; j++ {
if j % 2 == 1 {
dp[i % 2][j] = max(dp[(i - 1) % 2][j], dp[(i - 1) % 2][j - 1] - prices[i])
} else {
dp[i % 2][j] = max(dp[(i - 1) % 2][j], dp[(i - 1) % 2][j - 1] + prices[i])
}
}
}
return dp[(n - 1) % 2][k * 2]
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
```
### JavaScript:
```javascript
@ -558,3 +599,4 @@ impl Solution {
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a>