309. 最佳买卖股票时机含冷冻期

 1 //hold   持股1、昨天持股,今天什么都不做  2、昨天冻结,今天买入
 2 //sold 不持股1、昨天不持股,今天什么都不做 2、昨天持股,今天卖出
 3 //rest  冻结1、昨天持股,今天卖出
 4 class Solution 
 5 {
 6 public:
 7     int maxProfit(vector<int>& prices) 
 8     {
 9         if(prices.empty()) return 0;
10         int n = prices.size();
11         vector<int> rest(n,0),hold(n,0),sold(n,0);
12         rest[0] = 0,hold[0] = -prices[0],sold[0] = 0;
13         for(int i = 1;i < n;i ++)
14         {
15             hold[i] = max(hold[i - 1],rest[i - 1] - prices[i]);
16             sold[i] = hold[i - 1] + prices[i];
17             rest[i] = max(rest[i - 1],sold[i - 1]);
18         }
19         return max(rest[n - 1],sold[n - 1]);
20     }
21 };

 

posted @ 2020-04-19 17:35  Jinxiaobo0509  阅读(118)  评论(0)    收藏  举报