func maxProfit(prices []int) int {
size := len(prices)
if size <= 1 {
return 0
}
maxK := 2
dp := make([][][]int, size)
for i := 0; i < len(dp); i++ {
dp[i] = make([][]int, maxK+1)
for j := 0; j <= maxK; j++ {
dp[i][j] = make([]int, 2)
}
}
dp[0][0][1] = -prices[0]
dp[0][1][1] = -prices[0]
dp[0][2][1] = -prices[0]
for i := 1; i < size; i++ {
for k := 1; k <= maxK; k++ {
dp[i][k][0] = max(dp[i-1][k][0], dp[i-1][k][1]+prices[i])
dp[i][k][1] = max(dp[i-1][k][1], dp[i-1][k-1][0]-prices[i])
}
}
return dp[size-1][maxK][0]
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
力扣算法6-买卖股票的最佳时机 Ⅲ
最新推荐文章于 2024-02-21 15:43:01 发布