121. Best Time to Buy and Sell Stock

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/

思路

覺得題目用賣股票來描述不太恰當,你只允許一次交易的機會、在當天,找到最低價然後買進、接著在最高價賣出 

時間在流動,你根本不知道現在的價錢是不是最低價或能夠賣出最高價,這是「看著後照鏡開車」

就直接描述限制式:

  1. 找到最大差異
  2. 差異產生為後減前

就足夠了。用股票買賣來描述讓我以為有甚麼神奇演算法可以預測當天的低價與高價,白操心了

考慮:能夠只走過一次array,得到最佳的效能

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