按照灵神的思路,下面代码哪里不对呀,通过不了。是初始值不对吗?求大佬帮忙!!!
func maxProfit(prices []int) int {
length := len(prices)
dp := make([][3][2]int, length) // 可以使用“滚动数组”的思想把dp数组压缩,降低空间复杂度
// 初始值
for i := 0; i < length; i++ {
dp[i][0][1] = math.MinInt
}
dp[0][1][1] = - prices[0]
dp[0][2][1] = - prices[0]
for i := 1; i < length; i++ {
for j := 1; j <= 2; j++ {
// 第i天最多完成j交易不持有股票的最大利润
if dp[i-1][j][0] > dp[i-1][j-1][1] + prices[i] {
dp[i][j][0] = dp[i-1][j][0]
} else {
dp[i][j][0] = dp[i-1][j-1][1] + prices[i]
}
// 第i天最多完成j交易持有股票的最大利润
if dp[i-1][j][0] - prices[i] > dp[i-1][j][1] {
dp[i][j][1] = dp[i-1][j][0] - prices[i]
} else {
dp[i][j][1] = dp[i-1][j][1]
}
}
}
return dp[length-1][2][0] // 不持有股票的利润大于持有股票的利润
}