best-time-to-buy-and-sell-stock-iii leetcode C++

Say you have an array for which the i th 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).

C++

class Solution {
public:
    int maxProfit(vector<int>& prices){
        int buy1 = INT_MIN;
        int sell1 = 0;
        int buy2 = INT_MIN;
        int sell2 = 0;
        for(int i = 0; i< prices.size(); i++){
            buy1 = max(buy1,-prices[i]);
            sell1 = max(sell1,buy1 + prices[i]);
            buy2 = max(buy2, sell1 - prices[i]);
            sell2 = max(sell2,buy2 + prices[i]);
        }
       return sell2;
    }
};

 

posted @ 2018-09-20 00:40  vercont  阅读(124)  评论(0编辑  收藏  举报