309. Best Time to Buy and Sell Stock with Cooldown - Medium
前往題目
思路
一如其他dp
題目,轉換公式是最重要的
- 有三種狀況
- 持有
- 賣出
- 冷卻
- 如果當前選擇持有,那昨天只會有兩種可能
- 持有
- 冷卻,然後今天選擇持有所以要扣掉今天的價格
- 如果當前選擇賣出,那只有一種可能,昨天是持有的,而今天賣出,所以加上今天的賣出價
- 如果當前選擇冷卻,昨天就有兩種可能
- 同樣是冷卻(不可能持有,因為要賣出才會冷卻,所以昨天冷卻今天一樣可以選擇冷卻,即等待的意思)
- 賣出
有了這些想法,code
就再簡單不過了
要注意的是初始值,hold
初始值應設為<= -prices[i]
,因為第一天要不選擇買入,要不選擇等待,如果初始設為0
,那第一天賣出就會選到0
,因為賣出後錢變成負數
Code
NeetCode
大大也有解析,但官神的解法更加簡潔明瞭,而且只需要O(1)
空間
309. Best Time to Buy and Sell Stock with Cooldown - Medium
https://f88083.github.io/2024/02/29/309-Best-Time-to-Buy-and-Sell-Stock-with-Cooldown-Medium/