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:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
Reference in New Issue
Block a user