LeetCode 题解:123. 买卖股票的最佳时机 III,动态规划,JavaScript,详细注释

原题链接:123. 买卖股票的最佳时机 III
解题思路:
截至第
i天,当前已经交易过2次,每次交易都可以买(支出prices[i])或卖(收入prices[i]),因此可以用长度为4的dp数组递推。每种交易,都要在之前交易的基础上进行,例如只有买入后,才可以卖出。因此
4种状态转移方程为:
- 0~i 天,只买入 1 次的最优状态,dp[0] = Math.max(dp[0], -prices[i]);,第一次交易没有前置状态。
- 0~i 天,买入 1 次后,卖出的最优状态,dp[1] = Math.max(dp[1], dp[0] + prices[i]);。
- 0~i 天,卖出 1 次后,在买入 1 次的最优状态,dp[2] = Math.max(dp[2], dp[1] - prices[i]);。
- 0~i 天,买入 2 次,卖出 1 次后,在卖出 1 次的最优状态,dp[3] = Math.max(dp[3], dp[2] + prices[i]);。
卖出
2次获得的利润,一定比1次多,因此最大利润就在dp[3]。
复制代码
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/ab66bb18ceaaf4bd1b27c1e39】。文章转载请联系作者。











评论