[Leetcode][第309题][JAVA][最佳买卖股票时机含冷冻期][动态规划][压缩空间]
【問題描述】[中等]
【解答思路】
1. 動態規劃
動態規劃流程
第 1 步:設計狀態
f[i]表示第 i 天結束之后的「累計最大收益」
第 2 步:狀態轉移方程
f[i][0]=max(f[i?1][0],f[i?1][2]?prices[i])
f[i][1]=f[i?1][0]+prices[i]
f[i][2]=max(f[i?1][1],f[i?1][2])
第 3 步:考慮初始化
第 4 步:考慮輸出
max(f[n?1][0],f[n?1][1],f[n?1][2]) ? max(f[n?1][1],f[n?1][2])
第 5 步:考慮是否可以狀態壓縮
可 見方法2
f[0][1] 置為0
因為f[1][1]只和f[0][0]有關系,f[0][1]只影響f[1][2],而f[1][2]又是由f[0][1]和f[0][2]共同決定的,第0天f[0][1]和f[0][2]是同一狀態也就無所謂了。
時間復雜度:O(N) 空間復雜度:O(N)
2. 動態規劃路徑壓縮
時間復雜度:O(N) 空間復雜度:O(1)
【總結】
1.動態規劃流程
第 1 步:設計狀態
第 2 步:狀態轉移方程
第 3 步:考慮初始化
第 4 步:考慮輸出
第 5 步:考慮是否可以狀態壓縮
2. 三個狀態 三數組DP 兩數組DP信息量過大 處理不來
轉載鏈接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/solution/zui-jia-mai-mai-gu-piao-shi-ji-han-leng-dong-qi-4/
總結
以上是生活随笔為你收集整理的[Leetcode][第309题][JAVA][最佳买卖股票时机含冷冻期][动态规划][压缩空间]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开始Go开发之旅-Golang架构师之路
- 下一篇: 利用Adams对单摆进行建模、仿真的动力