1. 程式人生 > >[leetcode]121. Best Time to Buy and Sell Stock

[leetcode]121. 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 (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.

Note that you cannot sell a stock before you buy one.

Example 1:

Input: [7,1,5,3,6,4]
Output: 5

分析:

要求買賣一次的利潤最大,只要依次遍歷陣列,記錄當前的買入價格是否最小,若不是,更新最小買入價格;否則判斷當前利潤是否最大,若不是,更新利潤值。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int miniprice = INT_MAX;
        int maxprofit = 0;
        for(int i=0; i<prices.size(); i++)
        {
            if(prices[i] < miniprice)
                miniprice = prices[i];
            else if(prices[i]-miniprice > maxprofit)
                maxprofit = prices[i]-miniprice;
        }
        return maxprofit;
    }
};