标签:309 return int maxProfit length prices 冷冻 leetcode
func maxProfit(prices []int) int {
length := len(prices)
// 特殊判断
if length <= 1 {
return 0
}
// 声明dp
dp := make([][3]int, length) //dp[i][j]表示[0, i]区间内,在下标为i这一天状态为j时的最大收益。
// 初始化
dp[0][0] = 0 // 【0天】【不持股】
dp[0][1] = -prices[0] // 持股的初始化值为 -prices[0](表示购买了一股)【0天】【持股】
dp[0][2] = 0 // 【0天】【冷冻期】
for i := 1; i < length; i++ { //0 表示不持股1 表示持股;2 表示处在冷冻期。
// 【第i天】【不持股】 = max(昨天不持股今天不操作,昨天持股+今天卖一股)
dp[i][0] = max(dp[i-1][0], dp[i-1][1]+prices[i])
// 【第i天】【持股】 = max(昨天持股今天不操作,昨天冷冻期+今天买一股)
dp[i][1] = max(dp[i-1][1], dp[i-1][2]-prices[i])
// 【第i天】【冷冻期】 = 昨天卖了不持股
dp[i][2] = dp[i-1][0]
}
// 返回不持股和冷冻期的最大者
return max(dp[length-1][0], dp[length-1][0])
}
func max(x, y int) int {
if x > y {
return x
}
return y
标签:309,return,int,maxProfit,length,prices,冷冻,leetcode 来源: https://www.cnblogs.com/juice-e/p/13386901.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。