121. 买卖股票的最佳时机

 1 class Solution 
 2 {
 3 public:
 4     int maxProfit(vector<int>& prices) 
 5     {
 6         if(prices.empty()) return 0;
 7         int n = prices.size();
 8         int buy = prices[0];
 9         int res = 0;
10         for(int i = 1;i < n;i ++)
11         {
12             res = max(res,prices[i] - buy);
13             if(buy > prices[i]) buy = prices[i];
14         }
15         return res;
16     }
17 };

 

 1 class Solution 
 2 {
 3 public:
 4     int maxProfit(vector<int>& prices) 
 5     {
 6         if(prices.empty()) return 0;
 7         int n = prices.size();
 8         vector<vector<vector<int>>> dp(n,vector<vector<int>>(2,vector<int>(2,0)));
 9 
10         dp[0][1][0] = 0;  //i取0的时候
11         dp[0][1][1] = -prices[0];
12 
13         for(int i = 1;i < n;i ++)
14         {
15             for(int k = 1;k <= 1;k ++)
16             {
17                 dp[i][k][0] = max(dp[i-1][k][0],dp[i-1][k][1] + prices[i]);
18                 dp[i][k][1] = max(dp[i-1][k][1],dp[i-1][k-1][0] - prices[i]);
19             }
20         }
21 
22         return dp[n-1][1][0];
23     }
24 };

 

posted @ 2020-04-01 18:31  Jinxiaobo0509  阅读(126)  评论(0)    收藏  举报