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).
class Solution {
public:
int maxProfit(vector<int> &prices) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int minVal=0x7FFFFFFF;
int prev=0;
int next=0;
int max=0;
int i;
int count=prices.size();
int *max2=new int[count];
max2[count-1]=0;
for(i=count-2 ; i>=0 ; i--){
if(prices[i+1]>max)
max=prices[i+1];
if(max-prices[i]>next)
next=max-prices[i];
max2[i]=next;
}
max=0;
for(i=-1 ; i<count-2 ; i++){
if(i>=0){
if(prices[i]<minVal)
minVal=prices[i];
if(prices[i]-minVal>prev)
prev=prices[i]-minVal;
}
if(prev+max2[i+1]>max)
max=prev+max2[i+1];
}
return max;
}
};

被折叠的 条评论
为什么被折叠?



