【LeetCode】121. Best Time to Buy and Sell Stock

Best Time to Buy and Sell Stock

 

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.

 

记ret为收益(卖出-买入)

关键点就在于,随着prices的遍历,怎样更新ret?

1、如果当前遇到的元素比curMin小,就重新更新curMin

2、计算prices[i]与curMin的差值,并(可能需要)更新ret

上述顺序不可变,不然会产生收益为负的情况。

class Solution {
public:
    int maxProfit(vector<int> &prices) {
        int m = prices.size();
        if(m == 0)
            return 0;
            
        int curMin = prices[0];
        int ret = 0;
        for(int i = 1; i < m; i ++)
        {
            curMin = min(curMin, prices[i]);
            ret = max(ret, prices[i]-curMin);
        }
        return ret;
    }
};

posted @ 2014-05-10 22:57  陆草纯  阅读(2536)  评论(0编辑  收藏  举报