码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】Best Time to Buy and Sell Stock III

时间:2014-12-30 23:16:18      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

Best Time to Buy and Sell Stock III

Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete at most two transactions.

Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

 
设dpBack[i]为从第一天到第i天的最大的收益
设dpAfter[j]为从第j天到最后一天的最大收益
 
如何求最大收益可以考虑采用Best Time to Buy and Sell Stock I的方法
 
注意是最多买两次,也可以只买一次
 
 1 class Solution {
 2 public:
 3     int maxProfit(vector<int> &prices) {
 4        
 5         int n=prices.size();
 6         if(n==0)return 0;
 7  
 8         vector<int> dpBack(n),dpAfter(n);
 9  
10         int maxProfit=0;
11         dpBack[0]=0;
12         int left=prices[0];
13        
14         for(int i=1;i<n;i++)
15         {
16             if(prices[i]>left)
17             {
18                if(maxProfit<prices[i]-left) maxProfit=prices[i]-left;
19             }
20             else
21             {
22                 left=prices[i];
23             }
24            
25             dpBack[i]=maxProfit;
26         }
27        
28         maxProfit=0;
29         dpAfter[n-1]=0;
30         int right=prices[n-1];
31        
32         for(int j=n-2;j>=0;j--)
33         {
34             if(prices[j]<right)
35             {
36                 if(maxProfit<right-prices[j]) maxProfit=right-prices[j];
37             }
38             else
39             {
40                 right=prices[j];
41             }
42  
43             dpAfter[j]=maxProfit;
44         }
45        
46         int result=0;
47         for(int i=0;i<n-1;i++)
48         {
49             if(dpBack[i]+dpAfter[i+1]>result) result=dpBack[i]+dpAfter[i+1];
50            
51             if(result<dpBack[i+1]) result=dpBack[i+1];
52         }
53        
54         return result;
55     }
56 };

 

【leetcode】Best Time to Buy and Sell Stock III

标签:

原文地址:http://www.cnblogs.com/reachteam/p/4194631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!