121. Best Time to Buy and Sell Stock (Array;DP)

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

If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.

思路:注意不能简单地将最大值-最小值。卖必须发生在买之后,最小值得在最大值之前。记录下到当前为止最小值。

class Solution {
public:
    int maxProfit(vector<int> &prices) {
        if(prices.empty()) return 0;
        int maxProfit = 0;
        int min = INT_MAX;
        int profit;
        
        for(vector<int>::iterator it = prices.begin(); it < prices.end(); it ++)
        {
             if ((*it)<min)
             {
                 min = *it;
             }
             else
             {
                profit = *it - min;
                if(profit > maxProfit)
                {
                    maxProfit = profit;
                }
             }
        }
        return maxProfit;
    }
};

 

posted on 2015-10-14 18:38  joannae  阅读(184)  评论(0编辑  收藏  举报

导航