[188]best time to buy and sell stock iv

leetcode

这道题做起来的时候比较困难,有些地方不太容易想清楚。

首先应用DP的思路
DP[i][j] 表示 在前j天进行最多i次交易时的最大profits
这是容易考虑到,dp[i][j] = max(dp[i][j - 1] + * )

即相当于分厂两种状况,即第j天参与交易与第j天不参与交易。
若第j天不参与交易,则为dp第一项dp[i][j - 1]
若第j天参与交易,则应为第j天卖出了股票。

此时,不能够简单地直接应用dp[i - 1][j - 1] + diff,因为最佳的买入点未必是j - 1.

因此应该维护数组,buy, 记录当前状态是买入时的最大利润。

因此迭代公式为:
buy[i][j] = max(
dp[i][j] = max(dp[i][j - 1], buy[i][j] + prices[j])

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容