最佳时间买卖问题
题目
文章图片
309. Best Time to Buy and Sell Stock with Cooldown 解法
1、假定三个状态buy
, sell
, cool
,分别表示当前时刻有物品在手(buy),出售物品(sell),什么也不做(cool)。
2、
当前处于buy的情况有两种:上一个时刻处于buy
状态,当前时刻仍然维持该状态;上一个时刻处于cool
状态,当前时刻买入商品。
当前处于cool
的情况两种:上一个时刻出售商品(sell),当前cool
;上一个时刻为cool
,当前仍为cool
。
当前处于sell
的只有一种情况:上一个时刻为buy
,当前sell
。
3、确定每个时刻各状态的最优值并保存。示意图如下所示。
文章图片
流程图
【最佳时间买卖问题】代码如下
def maxProfit(self, prices: List[int]) -> int:
buy = float('-inf')
cool = 0
sell = 0
for p in prices:
buy = max(buy, cool-p)
cool = max(cool, sell)
sell = buy+p
return max(cool, sell)
推荐阅读
- 20170612时间和注意力开销记录
- 时间老了
- Eddy小文
- C语言中的时间函数clock()和time()你都了解吗
- 山香|山香 善思 智学访谈
- 请给时间一点时间
- 全过程工程咨询——时间管理(12)
- 最有效的时间管理工具(赢效率手册和总结笔记)
- 152
- 第十九周