Merge pull request #2020 from lynndove/master

增加了0188.买卖股票的最佳时机IV的解法二
This commit is contained in:
程序员Carl
2023-04-24 09:34:25 +08:00
committed by GitHub

View File

@ -328,6 +328,42 @@ func max(a, b int) int {
} }
``` ```
版本二: 三维 dp数组
```go
func maxProfit(k int, prices []int) int {
length := len(prices)
if length == 0 {
return 0
}
// [天数][交易次数][是否持有股票]
// 1表示不持有/卖出, 0表示持有/买入
dp := make([][][]int, length)
for i := 0; i < length; i++ {
dp[i] = make([][]int, k+1)
for j := 0; j <= k; j++ {
dp[i][j] = make([]int, 2)
}
}
for j := 0; j <= k; j++ {
dp[0][j][0] = -prices[0]
}
for i := 1; i < length; i++ {
for j := 1; j <= k; j++ {
dp[i][j][0] = max188(dp[i-1][j][0], dp[i-1][j-1][1]-prices[i])
dp[i][j][1] = max188(dp[i-1][j][1], dp[i-1][j][0]+prices[i])
}
}
return dp[length-1][k][1]
}
func max188(a, b int) int {
if a > b {
return a
}
return b
}
```
Javascript: Javascript:
```javascript ```javascript