mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
@ -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
|
||||
|
Reference in New Issue
Block a user